#include<bits/stdc++.h>
using namespace std;
using LL = long long;
#define endl '\n'
#define int long long
const LL inf = 1e18, maxn = 600005;
LL n,m,K,o[maxn],g[maxn],as[maxn],w[maxn];
pair<int,int> p[maxn];
vector<int> arr[maxn];
LL bit[maxn];
inline int lb(int x){
return x&(-x);
}
void modify(int x,int v){
for(int i=x;i<maxn;i+=lb(i)) bit[i] += v;
}
LL query(int x){
LL sum = 0;
for(int i=x;i;i-=lb(i)) sum += bit[i];
return sum;
}
void modify(int l,int r,int op){
for(int i=l;i<=r;++i){
if(i == K+1) continue;
if(p[i].second >= p[i].first){
modify(p[i].first,w[i]*op);
modify(p[i].second+1,-w[i]*op);
}else{
modify(p[i].first,w[i]*op);
modify(m+1,-w[i]*op);
modify(1,w[i]*op);
modify(p[i].second+1,-w[i]*op);
}
}
}
void split(vector<int> &qs,vector<int> &L, vector<int> &R){
for(int i:qs){
LL sum = 0;
for(int j:arr[i]){
sum += query(j);
}
if(sum >= g[i]) L.push_back(i);
else R.push_back(i);
}
vector<int>().swap(qs);
}
void rec(int l,int r,vector<int> &qs){
if(l == r){
for(int i:qs) as[i] = l;
return;
}
int mid = (l+r)/2;
modify(l,mid,1);
vector<int> L,R;
split(qs,L,R);
rec(mid+1,r,R);
modify(l,mid,-1);
rec(l,mid,L);
}
main(){
ios::sync_with_stdio(0); cin.tie(0);
cin>>n>>m;
for(int i=1;i<=m;++i) cin>>o[i];
for(int i=1;i<=n;++i) cin>>g[i];
cin>>K;
for(int i=1;i<=K;++i) cin>>p[i].first>>p[i].second>>w[i];
for(int i=1;i<=m;++i) arr[o[i]].push_back(i);
vector<int> qs;
for(int i=1;i<=n;++i) qs.push_back(i);
rec(1,K+1,qs);
for(int i=1;i<=n;++i){
if(as[i] != K+1) cout<<as[i]<<endl;
else cout<<"NIE"<<endl;
}
}
Compilation message (stderr)
met.cpp:68:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
68 | main(){
| ^~~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |