我不会啊哈哈,纯粹瞎写
题目描述
小明拥有 N 个彩灯,第 i 个彩灯的初始亮度为 ai。
小明将进行 Q 次操作,每次操作可选择一段区间,并使区间内彩灯的亮度 +x(x 可能为负数)。
求 Q 次操作后每个彩灯的亮度(若彩灯亮度为负数则输出 0)。
输入描述
第一行包含两个正整数 N,Q,分别表示彩灯的数量和操作的次数。
第二行包含 N 个整数,表示彩灯的初始亮度。
接下来 Q 行每行包含一个操作,格式如下:
l r x,表示将区间 l∼r 的彩灯的亮度 +x。
1≤N,Q≤5×10^5,0≤ai≤10^9,1≤l≤r≤N,−10^9≤x≤10^9
输出描述
输出共 1 行,包含 N 个整数,表示每个彩灯的亮度
输入
5 3
2 2 2 1 5
1 3 3
4 5 5
1 1 -100
输出
0 5 5 6 10
#include<stdio.h>
#include <stdlib.h>
#define N 1000
int a[N];
void addlight(int l,int r,int x,int n)
{
for(int m=l-1;m<r;m++)
{
a[m]+=x;
}
// return a[N];
}
int main(){
int n,q,l,r,x;
scanf("%d %d",&n,&q);//n个彩灯,q次操作
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);//light亮度
}
for(int j=0;j<q;j++)
{
scanf("%d %d %d",&l,&r,&x);
addlight(l,r,x,n);
}
for(int k=0;k<n;k++)
{
if(a[k]<0)
{
a[k]=0;
}
printf("%d ",a[k]);
}
}