1909: yifan的数组
题目描述
给你一个数组,初始值都是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 <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
long long int a[100010];
int main()
{
long long int w, n, m;
while(scanf("%lld",&n)!= EOF)
{
if(n == 0)
{
printf("0\n");continue;
}
memset(a,0,sizeof(a));
int l,b,c;
for (int i = 1; i <= n; i++)
{
scanf("%d%d%d",&l,&b,&c);
a[l] += c;
a[b+1] -= c;
}
long long int ma=a[1];
for(int i = 1; i < n; i++)
{
a[i+1] += a[i];
if(ma < a[i+1]) ma = a[i+1];
}
printf("%lld\n", ma);
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
long long int a[100010];
int main()
{
long long int w, n, m;
while(scanf("%lld",&n)!= EOF)
{
if(n == 0)
{
printf("0\n");continue;
}
memset(a,0,sizeof(a));
int l,b,c;
for (int i = 1; i <= n; i++)
{
scanf("%d%d%d",&l,&b,&c);
a[l] += c;
a[b+1] -= c;
}
long long int ma=a[1];
for(int i = 1; i < n; i++)
{
a[i+1] += a[i];
if(ma < a[i+1]) ma = a[i+1];
}
printf("%lld\n", ma);
}
return 0;
}