Submission #919460

#TimeUsernameProblemLanguageResultExecution timeMemory
919460noyancanturkMeteors (POI11_met)C++17
74 / 100
476 ms65536 KiB
#ifndef Local #pragma GCC optimize("O3,unroll-loops") const int lim=3e5+100; #else const int lim=1e3+100; #endif #include "bits/stdc++.h" using namespace std; #define int int64_t #define pb push_back const int mod=1e9+7; using pii=pair<int,int>; int tree[lim]; struct fenwick{ int n; fenwick(int n):n(n){ for(int i=0;i<=n;i++)tree[i]=0; } void update(int p,int val){ while(p<=n){ tree[p]+=val; p+=p&-p; } } void update(int l,int r,int val){ update(l,val),update(r+1,-val); } int query(int p){ int ans=0; while(p){ ans+=tree[p]; p-=p&-p; } return ans; } }; struct bs{ int l,r,i; inline bs(){} inline bs(int l,int r,int i) :l(l),r(r),i(i){} }; inline void solve(){ int n,m; cin>>n>>m; vector<int>v[n+1]; for(int i=1;i<=m;i++){ int tem; cin>>tem; v[tem].pb(i); } int goal[n+1]; for(int i=1;i<=n;i++){ cin>>goal[i]; } int k; cin>>k; bs all[k+1]; for(int i=1;i<=k;i++){ cin>>all[i].l>>all[i].r>>all[i].i; } vector<bs>qq[k+1]; for(int i=1;i<=n;i++){ qq[(1+k)>>1].pb(bs(1,k,i)); } int ans[n+1]; memset(ans,-1,sizeof(ans)); bool ok=1; while(ok){ ok=0; fenwick st(m+10); for(int t=1;t<=k;t++){ if(all[t].l<=all[t].r)st.update(all[t].l,all[t].r,all[t].i); else { st.update(all[t].l,m,all[t].i); st.update(1,all[t].r,all[t].i); } while(qq[t].size()){ bs now=qq[t].back(); qq[t].pop_back(); //cerr<<now.l<<" "<<now.r<<" "<<now.i<<"\n\n"; int tot=0; for(int j:v[now.i]){ tot+=st.query(j); } //cerr<<mid<<" "<<tot<<"\n\n"; int mid=(now.l+now.r)>>1; if(goal[now.i]<=tot){ ans[now.i]=mid; if(now.l<=mid-1){ qq[(now.l+mid-1)>>1].pb(bs(now.l,mid-1,now.i)); ok=1; } }else{ if(mid+1<=now.r){ qq[(mid+1+now.r)>>1].pb(bs(mid+1,now.r,now.i)); ok=1; } } } } } for(int i=1;i<=n;i++){ if(ans[i]==-1)cout<<"NIE\n"; else cout<<ans[i]<<"\n"; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); #ifdef Local freopen(".in","r",stdin); freopen(".out","w",stdout); #else #endif int t=1; //cin>>t; while (t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...