Submission #783265

#TimeUsernameProblemLanguageResultExecution timeMemory
783265Dan4LifeFood Court (JOI21_foodcourt)C++17
7 / 100
1004 ms524288 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define int long long #define sz(a) (int)a.size() #define all(a) begin(a),end(a) const int mxN = 70000; int n, m, q, tot[mxN], del[mxN]; deque<array<int,2>> shop[mxN]; void add(int i, int x, int v){ if(sz(shop[i]) and shop[i].back()[0]==x) shop[i].back()[1]+=v,tot[i]+=v; else shop[i].pb({x,v+(sz(shop[i])?shop[i].back()[1]:0)}),tot[i]+=v; } void rem(int i, int v){ if(tot[i]<=v) del[i]+=tot[i], tot[i]=0; else del[i]+=v, tot[i]-=v; } int get(int i, int v){ v+=del[i]; if(!sz(shop[i]) or shop[i].back()[1]<v) return 0; int l = 0, r = sz(shop[i])-1; while(l<r){ int mid = (l+r)/2; if(shop[i][mid][1]<v) l=mid+1; else r=mid; } return shop[i][l][0]; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> m >> q; while(q--){ int t, l, r, x, v; cin >> t; if(t==1){ cin >> l >> r >> x >> v; for(int i = l; i <= r; i++) add(i,x,v); } else if(t==2){ cin >> l >> r >> v; for(int i = l; i <= r; i++) rem(i,v); } else cin >> x >> v, cout << get(x,v) << "\n"; } }
#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...