Submission #738572

#TimeUsernameProblemLanguageResultExecution timeMemory
738572boyliguanhanMeteors (POI11_met)C++17
0 / 100
715 ms37688 KiB
#include<bits/stdc++.h> #pragma GCC optimize(2) #define N 300001 #define rep(i,j,k) for(I i=j;i<=k;i++) using namespace std; #define I long long I bit[N],ans[N],L[N],R[N],a[N]; struct c{I g, id;vector<I>st;}; void u(I x, I y) { for(;x<N;x+=x&-x) bit[x]+=y; } void upd(I l, I r, I x) { u(l,x),u(r+1,-x); if(l>r)u(1,x); } I q(I x) { I r = 0; while(x)r+=bit[x],x-=x&-x; return r; } c X[N]; void solve(I l, I r, vector<int> cs){ if(l==r) { for(auto i: cs) ans[X[i].id] = l; l++; } if(cs.empty()||l>r) return; I m=l+r>>1; rep(i,l,m) upd(L[i],R[i],a[i]); vector<int>c1,c2; for(auto i: cs) { I x=0; for(auto j:X[i].st)x+=q(j); if(x<=X[i].g) X[i].g-=x,c2.push_back(i); else c1.push_back(i); } cs.clear(); rep(i,l,m) upd(L[i],R[i],-a[i]); solve(l,m,c1); solve(m+1,r,c2); } int main() { I n,m,k; cin>>n>>m; vector<int> v(n); iota(v.begin(),v.end(),0); rep(i,1,m){ I x; cin>>x; X[x-1].st.push_back(i); } rep(i,0,n-1)cin>>X[i].g,X[i].id=i+1; cin>>k; rep(i,1,k)cin>>L[i]>>R[i]>>a[i]; L[k+1]=1,R[k+1]=m,a[k+1]=1e18; solve(1,k+1,v); rep(i,1,n) if(ans[i]<=k) cout << ans[i] <<'\n'; else cout << "NIE\n"; }

Compilation message (stderr)

met.cpp: In function 'void solve(long long int, long long int, std::vector<int>)':
met.cpp:29:10: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   29 |     I m=l+r>>1;
      |         ~^~
#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...