Submission #485667

#TimeUsernameProblemLanguageResultExecution timeMemory
485667antontsiorvasDistributing Candies (IOI21_candies)C++17
0 / 100
229 ms12060 KiB
#include "candies.h" #include <cstdio> #include <algorithm> #include <vector> using namespace std; const int root = 450; int buck[500]; std::vector<int> distribute_candies(std::vector<int> c, std::vector<int> l, std::vector<int> r, std::vector<int> v) { int n = c.size(), q = l.size(); std::vector<int> s(n); for(int i=0; i<q; i++){ int sb = l[i]/root, lb = r[i]/root; int esb = (sb + 1)*root - 1, slb = lb*root; if(sb == lb){ for(int j=l[i]; j<=r[i]; j++){ if(v[i] > 0) s[j] = min(c[j], s[j] + v[i]); else s[j] = max(0,s[j] + v[i]); } continue; } for(int j=l[i]; j<=esb; j++){ if(v[i] > 0) s[j] = min(c[j], s[j] + v[i]); else s[j] = max(0,s[j] + v[i]); } for(int j=sb+1; j<=lb-1; j++){ if(v[i] > 0) buck[j] = min(c[j], buck[j] + v[i]); else buck[j] = max(0,buck[j] + v[i]); } for(int j=slb; j<=r[i]; j++){ if(v[i] > 0) s[j] = min(c[j], s[j] + v[i]); else s[j] = max(0,s[j] + v[i]); } } for(int i=0; i<n; i++){ s[i] = min(c[i], s[i] + buck[i/root]); } return s; }
#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...