http://codeforces.com/problemset/problem/296/C
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<cmath>
#include<string>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
ll n,m,k;
ll temp[100001];
ll d[100001][3];
ll t[100001];
ll tt[100001];
ll dis[100001];
int main(){
cin>>n>>m>>k;
for(ll i=1;i<=n;i++){
cin>>temp[i];
dis[i]=temp[i]-temp[i-1];//temp的差分数组dis
}
for(ll i=1;i<=m;i++){
cin>>d[i][0]>>d[i][1]>>d[i][2];//区间[d[i][0],d[i][1]]的数加上d[i][2];
}
ll x,y;
for(ll i=1;i<=k;i++){
cin>>x>>y;
t[x]++;//tt的差分数组t,次数的差分[x,y]区间内的操作次数加一
t[y+1]--;
}
for(ll i=1;i<=m;i++){
tt[i]=tt[i-1]+t[i];//求次数tt
}
for(ll i=1;i<=m;i++){
dis[d[i][0]]+=tt[i]*d[i][2];//区间[d[i][0],d[i][1]]的数加上次数乘以权值
dis[d[i][1]+1]-=tt[i]*d[i][2];
}
for(ll i=1;i<=n;i++){
temp[i]=temp[i-1]+dis[i];
if(i==n){
cout<<temp[i]<<endl;
}
else {
cout<<temp[i]<<" ";
}
}
return 0;
}
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<cmath>
#include<string>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
ll n,m,k;
//初值为0的差分数组
//前缀和思想
ll temp[100001];
ll d[100001][3];
ll t[100001];//数组的d的次数差分数组
ll dis[100001];//数组temp的差分数组
int main(){
cin>>n>>m>>k;
for(ll i=1;i<=n;i++){
cin>>temp[i];
}
for(ll i=1;i<=m;i++){
cin>>d[i][0]>>d[i][1]>>d[i][2];
}
ll x,y;
for(ll i=1;i<=k;i++){
cin>>x>>y;
t[x]++;
t[y+1]--;
}
ll now=0;
for(ll i=1;i<=m;i++){
now+=t[i];//用一个变量去累加该区间差分数组
dis[d[i][0]]+=now*d[i][2];//进行差分
dis[d[i][1]+1]-=now*d[i][2];
}
now=0;
for(ll i=1;i<=n;i++){
now+=dis[i];//同上
temp[i]+=now;
}
cout<<temp[1];
for(ll i=2;i<=n;i++){
cout<<" "<<temp[i];
}
cout<<endl;
return 0;
}