Submission #1243645

#TimeUsernameProblemLanguageResultExecution timeMemory
1243645raphaelpDistributing Candies (IOI21_candies)C++20
0 / 100
5093 ms30936 KiB
#include "candies.h" #include <bits/stdc++.h> using namespace std; vector<int> distribute_candies(vector<int> C, vector<int> L, vector<int> R, vector<int> V) { long long N = C.size(), Q = L.size(); vector<int> ans(N); vector<long long> heights(Q); vector<vector<long long>> Tab; for (long long i = 0; i < Q; i++) { Tab.push_back({L[i], i, V[i]}); Tab.push_back({R[i] + 1, i, 0}); } sort(Tab.begin(), Tab.end()); long long buff = 0; for (long long i = 0; i < N; i++) { while (buff < Tab.size() && Tab[buff][0] == i) { heights[Tab[buff][1]] = Tab[buff][2]; buff++; } long long maxx = 0, minn = 0, cur = 0; for (int j = Q - 1; j >= 0; j--) { cur -= heights[j]; maxx = max(maxx, cur); minn = min(minn, cur); ans[i] = -cur; if (maxx - minn >= C[i]) { if (cur == maxx) ans[i] = -minn; else ans[i] = C[i] - maxx; break; } } } return ans; } /*int main() { int N, Q; cin >> N >> Q; vector<int> C(N), L(Q), R(Q), V(Q); for (int i = 0; i < N; i++) cin >> C[i]; for (int i = 0; i < Q; i++) cin >> L[i] >> R[i] >> V[i]; vector<int> ans = distribute_candies(C, L, R, V); for (int i = 0; i < ans.size(); i++) cout << ans[i] << ' '; }*/
#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...