#include<bits/stdc++.h>
using namespace std;
#define ll int
#define pb push_back
#define pf push_front
#define F first
#define S second
#define IShowSpeed ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define all(a) a.begin(),a.end()
const int N=3e5+10;
const int mod=1e9+7;
const int dx[] = {-1, 0, 0, 1};
const int dy[] = {0, -1, 1, 0};
ll b[N],l[N],r[N],x[N],L[N],R[N],t[4*N],md[4*N],ans[N];
vector<ll>g[N],mids[N];
void ah(ll& x) {
x = min(mod,x);
return;
}
void push(ll v, ll tl, ll tr) {
if(tl != tr && md[v]) {
ll mid = (tl + tr) >> 1;
md[v+v] += md[v];
md[v+v+1] += md[v];
t[v+v] += md[v];
t[v+v+1] += md[v];
ah(md[v+v]);
ah(md[v+v+1]);
ah(t[v+v]);
ah(t[v+v+1]);
}
md[v] = 0;
}
void upd(ll v, ll tl, ll tr, ll l, ll r, ll x) {
if(l > tr || tl > r) return;
push(v,tl,tr);
if(l <= tl && tr <= r) {
md[v] += x;
t[v] += md[v];
ah(md[v]);
ah(t[v]);
push(v,tl,tr);
return;
}
ll mid = (tl + tr) >> 1;
upd(v+v,tl,mid,l,r,x);
upd(v+v+1,mid+1,tr,l,r,x);
}
ll get(ll v, ll tl, ll tr, ll pos) {
if(tl == tr) return t[v];
push(v,tl,tr);
ll mid = (tl + tr) >> 1;
if(pos <= mid) return get(v+v,tl,mid,pos);
else return get(v+v+1,mid+1,tr,pos);
}
int main()
{
IShowSpeed
ll tt=1;
//cin>>tt;
while(tt--)
{
ll n,m,q;
cin>>n>>m;
for(int i=1;i<=m;i++) {
ll x;
cin>>x;
g[x].pb(i);
}
for(int i=1;i<=n;i++) cin>>b[i];
cin>>q;
for(int i=1;i<=q;i++) cin>>l[i]>>r[i]>>x[i];
for(int i=1;i<=n;i++) {
L[i] = 1;
R[i] = q;
}
while(true) {
bool chk = 0;
for(int i=1;i<=m*4;i++) t[i] = md[i] = 0;
for(int i=1;i<=q;i++) mids[i].clear();
for(int i=1;i<=n;i++) {
if(L[i] <= R[i]) {
chk = 1;
mids[(L[i] + R[i]) >> 1].pb(i);
}
}
if(!chk) break;
for(int i=1;i<=q;i++) {
if(l[i] <= r[i]) upd(1,1,m,l[i],r[i],x[i]);
else {
upd(1,1,m,l[i],m,x[i]);
upd(1,1,m,1,r[i],x[i]);
}
for(ll ok: mids[i]) {
ll sum = 0;
for(ll y: g[ok]) {
sum += get(1,1,m,y);
if(sum >= b[ok]) break;
}
if(sum >= b[ok]) ans[ok] = i,R[ok] = i - 1;
else L[ok] = i + 1;
}
}
}
for(int i=1;i<=n;i++) {
if(!ans[i]) cout<<"NIE\n";
else cout<<ans[i]<<"\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... |