#include<bits/stdc++.h>
#define rep(a,b,c) for(ll a=b;a<=c;++a)
#define ll long long 
#define ff first 
#define ss second 
#define mp make_pair 
using namespace std;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll N=3e5+5,inf=1e18;
ll n,m,q,O[N],tar[N],L[N],R[N],A[N],ans[N],BIT[N];
vector<ll> T[N];
ll lowbit(ll x){return x&(-x);}
void modify(ll l,ll r,ll v){
    for(ll i=l;i<=m;i+=lowbit(i)) BIT[i]+=v;
    for(ll i=r+1;i<=m;i+=lowbit(i)) BIT[i]-=v;
}
ll query(ll pos){
    ll res=0;
    for(ll i=pos;i>=1;i-=lowbit(i)) res+=BIT[i];
    return res;
}
void Do(ll l,ll r){
    rep(i,l,r){
        if(L[i]<=R[i]) modify(L[i],R[i],A[i]);
        else{
            modify(1,R[i],A[i]);
            modify(L[i],m,A[i]);
        }
    }
}
void Undo(ll l,ll r){
    rep(i,l,r){
        if(L[i]<R[i]) modify(L[i],R[i],-A[i]);
        else{
            modify(1,R[i],-A[i]);
            modify(L[i],m,-A[i]);
        }
    }
}
void Split(vector<ll> &qry,vector<ll> &lft,vector<ll> &rgt){
    for(ll i:qry){
        ll cur=0;
        for(ll j:T[i]){
            cur+=query(j);
            if(cur>=tar[i]) break;
        }
        if(cur>=tar[i]) lft.push_back(i);
        else rgt.push_back(i);
    }
    vector<ll>().swap(qry);
}
void TBS(ll l,ll r,vector<ll> &qry){
    if(l==r){
        for(ll i:qry) ans[i]=l;
        return ;
    }
    ll mid=(l+r)>>1;
    Do(l,mid);
    vector<ll> lft,rgt;
    Split(qry,lft,rgt);
    TBS(mid+1,r,rgt);
    Undo(l,mid);
    TBS(l,mid,lft);
}
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);
    cin>>n>>m;
    rep(i,1,m) cin>>O[i],T[O[i]].push_back(i);
    rep(i,1,n) cin>>tar[i];
    cin>>q;
    rep(i,1,q) cin>>L[i]>>R[i]>>A[i];
    vector<ll> Q;
    rep(i,1,n) Q.push_back(i);
    TBS(1,q,Q);
    Do(1,q);
    rep(i,1,n){
        ll cur=0;
        for(ll j:T[i]){
            cur+=query(j);
            if(cur>=tar[i]) break;
        }
        if(cur<tar[i]) ans[i]=-1;
    }
    rep(i,1,n){
        if(ans[i]==-1) cout<<"NIE"<<'\n';
        else cout<<ans[i]<<'\n';
    }
    return 0;
}
| # | 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... |