Submission #1081206

#TimeUsernameProblemLanguageResultExecution timeMemory
1081206TrentFood Court (JOI21_foodcourt)C++17
0 / 100
1059 ms20316 KiB
#include <iostream> #include "bits/stdc++.h" #define forR(i, x) for(int i=0; i < (x); ++i) #define REP(i, a, b) for(int i=(a); i<(b); ++i) #define all(x) x.begin(), x.end() #define boost() cin.sync_with_stdio(0); cin.tie(0) #define asst(x) if(!(x)) exit(1) using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<ll> vll; const int MN = 2e5 + 10; int len[MN]; struct ev{ int ti; ll to; }; ll ch[MN]; int c[MN]; bool us[MN]; vector<ev> evs[MN]; struct query{ int ai, i; ll b; }; vector<query> qus[MN]; int ans[MN]; ll getVal(int i) { ll ret = 0; forR(j, i+1) ret = max(0LL, ret + ch[j]); return ret; } ll negSum(int l, int r) { ll ret = 0; REP(j, l, r+1) if(ch[j] < 0) ret += ch[j]; return ret; } int main(){ boost(); int n, m, q; cin >> n >> m >> q; int ai=0; forR(i, q){ int ty; cin >> ty; if(ty == 1){ int l, r, k; cin >> l >> r >> c[i] >> k; evs[l].push_back({i, k}); evs[r+1].push_back({i, 0}); } else if(ty == 2){ int l, r, k; cin >> l >> r >> k; evs[l].push_back({i, -k}); evs[r+1].push_back({i, 0}); } else { int a; ll b; cin >> a >> b; qus[a].push_back({ai++, i, b}); } } REP(i, 1, n+1){ for(auto [ti, to] : evs[i]) { ch[ti] = to; } cerr << i << ":\n"; forR(j, q) cerr << ch[j] << ' '; cerr << '\n'; for(auto [ai, ti, b] : qus[i]) { int j = 0; bool found = false; for(; j <= ti && !found;) { if(getVal(j) + negSum(j+1, ti) >= b) { found = true; } else ++j; } if(found) { ans[ai] = c[j]; } else ans[ai] = 0; } } forR(i, ai) cout << ans[i] << '\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...