Submission #1166926

#TimeUsernameProblemLanguageResultExecution timeMemory
1166926PagodePaiva사탕 분배 (IOI21_candies)C++20
0 / 100
63 ms10944 KiB
#include "candies.h" #include<bits/stdc++.h> using namespace std; const int N = 200010; long long pref[N][2]; 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(); for(int i = 0;i < q;i++){ if(v[i] > 0){ pref[l[i]][0] += v[i]; pref[r[i]+1][0] -= v[i]; } else{ pref[l[i]][1] += v[i]; pref[r[i]+1][1] -= v[i]; } } std::vector<int> s; long long res = 0, plus = 0, neg = 0; for(int i = 0;i < n;i++){ if(pref[i][0] <= 0){ if(plus >= -pref[i][0]) plus += pref[i][0]; else{ pref[i][0] += plus; plus = 0; res += pref[i][0]; if(res < 0){ neg += res; res = 0; } } } else{ if(pref[i][0]+res >= c[i]){ long long diff = c[i]-res; res = c[i]; plus += pref[i][0]-diff; } else{ res += pref[i][0]; } } if(pref[i][1] >= 0){ if(-neg >= pref[i][1]) neg += pref[i][1]; else{ pref[i][1] += neg; neg = 0; res += pref[i][1]; if(res >= c[i]){ plus += res-c[i]; res = c[i]; } } } else{ if(pref[i][1]+res <= 0){ long long diff = res; res = 0; neg += pref[i][1]+diff; } else{ res += pref[i][1]; } } s.push_back(res); } 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...