Submission #644031

#TimeUsernameProblemLanguageResultExecution timeMemory
644031ttamxMeteors (POI11_met)C++14
0 / 100
6078 ms18108 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef tuple<int,int,int> t3; const int N=3e5+5; struct fenwick{ ll tree[N]={}; void init(){ for(int i=0;i<N;++i)tree[i]=0; } void add(int i,ll v){ while(i<N){ tree[i]+=v; i+=i&-i; } } ll read(int i){ ll sum=0; while(i>0){ sum+=tree[i]; i-=i&-i; } return sum; } }f; int n,m,k; int o[N],l[N],r[N],ans[N]; ll p[N]; bool can[N]; vector<t3> v; int main(){ cin.tie(nullptr)->sync_with_stdio(false); cin >> n >> m; for(int i=1;i<=m;++i)cin >> o[i]; for(int i=1;i<=n;++i)cin >> p[i]; cin >> k; v.emplace_back(0,0,0); for(int i=1;i<=k;++i){ int a,b,c; cin >> a >> b >> c; v.emplace_back(a,b,c); } for(int i=1;i<=n;++i)l[i]=0,r[i]=k+1; int idx=1; while(idx<=n){ int mid=(l[idx]+r[idx])/2; f.init(); for(int i=1;i<=mid;++i){ auto [a,b,c]=v[i]; f.add(a,c); f.add(b+1,-c); if(b<a){ f.add(1,c); f.add(m+1,-c); } } int sum[N]={}; for(int i=1;i<=m;++i){ sum[o[i]]+=f.read(i); } for(int i=1;i<=n;++i){ if(l[i]>=r[i])continue; if((l[i]+r[i])/2!=mid)continue; if(sum[i]>=p[i])r[i]=mid,can[i]=true; else l[i]=mid+1; } if(l[idx]>=r[idx])ans[idx]=r[idx],++idx; } for(int i=1;i<=n;++i){ if(can[i])cout << ans[i] << '\n'; else cout << "NIE" << '\n'; } return 0; }

Compilation message (stderr)

met.cpp: In function 'int main()':
met.cpp:55:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   55 |             auto [a,b,c]=v[i];
      |                  ^
#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...