Tinamei
其实你不知道你不知道

yifan的数组

时间限制: 1 Sec  内存限制: 128 MB
提交: 159  解决: 47
[提交][状态]

题目描述

给你一个数组,初始值都是0,然后有N个操作,每次在一段区间L,R上加W,操作完后,求出这个数组中最大值是多少?

 

输入

多组样例,一个数字N表示N个操作,接下来N个数字L,R, W,表示给区间L,R加W,(1 <= L, R, W <= 100000。0 <= N <= 100000)

 

输出

一个数字代表答案

 

样例输入

3
1 2 1
1 3 2
1 3 4
4
1 1 2
2 2 4
3 3 1
4 4 5
0

样例输出

7
5
0



这题要好好的记录一下,也可以这么玩儿~
(为什么听过一遍题解,还和第一次见差不多~
#include<iostream>
#include<cstring>
#include<cstring>

using namespace std;

#define N 100010

int main()
{
    int n, l, r, w, a[N];

    while(cin >> n)
    {
        int ans = 0, maxx = 0;;

        memset(a, 0, sizeof(a));

        if(n == 0)
        {
            cout << n << endl;
            break;
        }
        for(int i = 0; i < n; i++)
        {
            cin >> l >> r >> w;

            ans = ans > r ? ans : r;

            a[l] += w;
            a[r+1] -= w;
        }

        for(int i = 1; i <= ans; i++)
        {
            a[i] += a[i-1];
            if(a[i] > maxx)
                maxx = a[i];
        }
        cout << maxx << endl;
    }
    return 0;
}
posted on 2015-07-20 17:04  Tinamei  阅读(124)  评论(0编辑  收藏  举报