题目链接
思路:先处理大的,再考虑小的。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+5;
ll temp=0,a[maxn],l[maxn],r[maxn],num[maxn],d[maxn],cnt[maxn],sum[maxn];
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;++i) scanf("%lld",&a[i]);
for(int i=1;i<=m;++i) scanf("%lld%lld%lld",&l[i],&r[i],&num[i]);
for(int i=1,u,v;i<=k;++i)
{
scanf("%d%d",&u,&v);
d[u]++;d[v+1]--;
}
for(int i=1;i<=m;++i)
temp+=d[i],cnt[i]=temp;
for(int i=1;i<=m;++i)
sum[l[i]]+=cnt[i]*num[i],sum[r[i]+1]-=cnt[i]*num[i];
temp=0;
for(int i=1;i<=n;++i) temp+=sum[i],printf("%lld ",temp+a[i]);
}