제출 #1146256

#제출 시각아이디문제언어결과실행 시간메모리
1146256antonn푸드 코트 (JOI21_foodcourt)C++20
2 / 100
270 ms589824 KiB
#include <bits/stdc++.h> #define F first #define S second using namespace std; using ll = long long; using pi = pair<int, int>; using vi = vector<int>; template<class T> bool ckmin(T& a, T b) { return b < a ? a = b, true : false; } template<class T> bool ckmax(T& a, T b) { return a < b ? a = b, true : false; } int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m, q; cin >> n >> m >> q; vector<vector<int>> a(q+1, vector<int>(n+1)); vector<vector<int>> join(q+1, vector<int>(n+1)); vector<vector<int>> leave(q+1, vector<int>(n+1)); vector<int> types(q+1); for (int iq = 1; iq <= q; ++iq) { int t; cin >> t; for (int i = 1; i <= n; ++i) a[iq][i] = a[iq - 1][i]; if (t == 1) { int l, r, c, k; cin >> l >> r >> c >> k; for (int i = l; i <= r; ++i) a[iq][i] += k; for (int i = l; i <= r; ++i) join[iq][i] += k; types[iq] = c; } else if (t == 2) { int l, r, k; cin >> l >> r >> k; for (int i = l; i <= r; ++i) a[iq][i] -= k; for (int i = l; i <= r; ++i) a[iq][i] = max(a[iq][i], 0); for (int i = l; i <= r; ++i) leave[iq][i] = k; } else { int p, x; cin >> p >> x; if (a[iq][p] < x) { cout << 0 << "\n"; continue; } int day = 0; for (int i = 1; i < iq; ++i) { if (a[i][p] == 0) { day = i; } } int a = 0, b = 0; for (int i = day + 1; i <= iq; ++i) { a += leave[i][p]; } int ans = 0; for (int i = day + 1; i <= iq; ++i) { b += join[i][p]; if (b >= a + x) { ans = types[i]; break; } } cout << ans << "\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...