Submission #1300833

#TimeUsernameProblemLanguageResultExecution timeMemory
1300833maxbrucelenMeteors (POI11_met)C++20
74 / 100
532 ms18744 KiB
#include<bits/stdc++.h> using namespace std; using LL = long long; #define endl '\n' const LL inf = 1e18, maxn = 300005; LL n,m,K,o[maxn],g[maxn],as[maxn],w[maxn]; pair<int,int> p[maxn]; vector<int> arr[maxn]; LL bit[maxn]; inline int lb(int x){ return x&(-x); } void modify(int x,int v){ for(int i=x;i<maxn;i+=lb(i)) bit[i] += v; } LL query(int x){ LL sum = 0; for(int i=x;i;i-=lb(i)) sum += bit[i]; return sum; } void modify(int l,int r,int op){ for(int i=l;i<=r;++i){ if(p[i].second >= p[i].first){ modify(p[i].first,w[i]*op); modify(p[i].second+1,-w[i]*op); }else{ modify(p[i].first,w[i]*op); modify(m+1,-w[i]*op); modify(1,w[i]*op); modify(p[i].second+1,-w[i]*op); } } } void split(vector<int> &qs,vector<int> &L, vector<int> &R){ for(int i:qs){ LL sum = 0; for(int j:arr[i]){ sum += query(j); } if(sum >= g[i]) L.push_back(i); else R.push_back(i); } vector<int>().swap(qs); } void rec(int l,int r,vector<int> &qs){ if(l == r){ for(int i:qs) as[i] = l; return; } int mid = (l+r)/2; modify(l,mid,1); vector<int> L,R; split(qs,L,R); rec(mid+1,r,R); modify(l,mid,-1); rec(l,mid,L); } main(){ ios::sync_with_stdio(0); cin.tie(0); cin>>n>>m; for(int i=1;i<=m;++i) cin>>o[i]; for(int i=1;i<=n;++i) cin>>g[i]; cin>>K; for(int i=1;i<=K;++i) cin>>p[i].first>>p[i].second>>w[i]; for(int i=1;i<=m;++i) arr[o[i]].push_back(i); vector<int> qs; for(int i=1;i<=n;++i) qs.push_back(i); rec(1,K+1,qs); for(int i=1;i<=n;++i){ if(as[i] != K+1) cout<<as[i]<<endl; else cout<<"NIE"<<endl; } }

Compilation message (stderr)

met.cpp:66:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   66 | main(){
      | ^~~~
#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...