Submission #655134

#TimeUsernameProblemLanguageResultExecution timeMemory
655134snpmrnhlolMeteors (POI11_met)C++17
74 / 100
1562 ms55592 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll v[400000],v2[400000],l[400000],r[400000]; ll v3[400000],v4[400000],v5[400000]; vector <ll> v6[400000]; vector <ll> v7[400000]; class fenwick{ ll fen[400001]; public: ll query(ll pos){ pos++; ll r = 0; for(ll i = pos;i > 0;i-=(i&-i))r+=fen[i]; //cout<<"query:"<<pos - 1<<",result:"<<r<<'\n'; return r; } void add(ll pos,ll nr){ //cout<<"added:"<<pos<<','<<nr<<'\n'; pos++; for(ll i = pos;i <= 400000;i+=(i&-i))fen[i]+=nr; } void empt(){ for(ll i = 0;i <= 400000;i++)fen[i] = 0; //cout<<"emptied\n"; } }; fenwick fen; ll calc(ll nr){ ll r = 0; for(auto i:v7[nr]){ //cout<<i<<' '<<fen.query(i)<<'\n'; r+=fen.query(i); } return r; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n,m,i,q,j; cin>>n>>m; for(i = 0;i < m;i++)cin>>v[i],v[i]--,v7[v[i]].push_back(i);; for(i = 0;i < n;i++){ cin>>v2[i]; } cin>>q; for(i = 0;i < q;i++){ cin>>v3[i]>>v4[i]>>v5[i]; v3[i]--; v4[i]--; } for(i = 0;i < n;i++)l[i] = 0,r[i] = q; for(i = 0;i < 20;i++){ for(j = 0;j < q;j++)v6[j].clear(); fen.empt(); for(j = 0;j < n;j++){ if(l[j] != r[j]){ v6[(l[j] + r[j])/2].push_back(j); } } ///simulate for(j = 0;j < q;j++){ //cout<<"adding query:"<<j<<','; if(v3[j] <= v4[j]){ fen.add(v3[j],v5[j]); fen.add(v4[j] + 1,-v5[j]); }else{ swap(v3[j],v4[j]); fen.add(0,v5[j]); fen.add(v3[j] + 1,-v5[j]); fen.add(v4[j],v5[j]); swap(v3[j],v4[j]); } //cout<<'\n'; for(auto p:v6[j]){ //cout<<calc(p)<<' '<<j<<' '<<p<<'\n'; if(calc(p) >= v2[p]){ r[p] = j; }else{ l[p] = j + 1; } } } } for(i = 0;i < n;i++){ if(l[i] == q)cout<<"NIE"; else cout<<l[i] + 1; cout<<'\n'; } return 0; } /** 3 5 1 3 2 1 3 8 1 8 3 4 2 4 1 3 1 3 5 2 **/
#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...