排序+区间合并+差分数组
#include <bits/stdc++.h>
using namespace std;
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N = 3e5+7;
//#define int long long
int a[N],b[N],c[N];
vector<vector<int>>v(N);
string s;
int n,m,q;
signed main()
{
IOS;
cin>>n>>m>>q;
for(int i=1;i<=m;i++)cin>>a[i];
while(q--){
int p,k;
cin>>p>>k;
v[p].push_back(k);
}
for(int i=1;i<=m;i++){
int k=1;
sort(v[i].begin(),v[i].end());
for(int j=0;j<v[i].size();j++){
int p=v[i][j]+a[i]-1;
if(p>=k){
b[max(k,v[i][j])]++;
b[p+1]--;
k=p+1;
}
}
}
for(int i=1;i<=n;i++)c[i]=c[i-1]+b[i];
for(int i=1;i<=n;i++)cout<<c[i]<<" ";
return 0;
}