// In the name of Allah //
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define S second
#define F first
typedef pair<int,int> pii;
typedef pair<int,pii> pip;
const int N=3e5+5 , mod=1e9+7 , inf=1e9;
int n , m , sq , cnt2[N];
int g[N] , p[N] , a[N] , ans[N] , cnt[N];
vector<int> ch[N];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m;
for(int i=1 ; i<=m ; i++)
cin >> g[i] , ch[g[i]].pb(i);
for(int i=1 ; i<=n ; i++)
cin >> a[i];
int q , cn=0 , ii=0;
cin >> q;
sq = max(1 , (int)sqrt(q));
vector<pip> qu;
while(q--)
{
int l , r , v;
cin >> l >> r >> v;
ii++ , cn++;
qu.pb({v , {l , r}});
if(l <= r)
{
p[l] += v;
p[r+1]-=v;
}
else
{
p[l] += v;
p[m+1]-=v;
p[1] += v;
p[r+1]-=v;
}
if(cn==sq || q==0)
{
vector<int> ok;
for(int i=1 ; i<=m+1 ; i++)
p[i] += p[i-1];
for(int i=1 ; i<=n ; i++)
cnt2[i] = cnt[i];
for(int i=1 ; i<=m ; i++)
{
cnt[g[i]] += p[i];
if(cnt[g[i]] >= a[g[i]] && cnt2[g[i]] < a[g[i]])
ok.pb(g[i]);
}
for(int st : ok)
{
if(ans[st] == 0)
{
int be = cnt2[st];
vector<int> tmp(m+2);
for(int j=ii-cn+1 ; j<=ii ; j++)
{
int lq = qu[j-1].S.F;
int rq = qu[j-1].S.S;
int vq = qu[j-1].F;
if(lq <= rq)
{
tmp[lq] += vq;
tmp[rq+1] -= vq;
}
else
{
tmp[lq] += vq;
tmp[m+1] -= vq;
tmp[1] += vq;
tmp[rq+1]-= vq;
}
vector<int> pre(m+2);
for(int x=1 ; x<=m ; x++)
pre[x] = pre[x-1] + tmp[x];
int cur = be;
for(int pos : ch[st])
cur += pre[pos];
if(cur >= a[st])
{
ans[st] = j;
break;
}
}
}
}
for(int i=1 ; i<=m+1 ; i++)
p[i] = 0;
cn = 0;
}
}
for(int i=1 ; i<=n ; i++)
{
if(ans[i]!=0) cout << ans[i] << "\n";
else cout << "NIE\n";
}
}
| # | 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... |