Submission #1166898

#TimeUsernameProblemLanguageResultExecution timeMemory
1166898PagodePaivaDistributing Candies (IOI21_candies)C++20
0 / 100
64 ms10940 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(res+pref[i][0] >= c[0]){ long long diff = c[0]-res; res = c[0]; plus += pref[i][0]-diff; } else if(plus+pref[i][0] <= 0){ long long diff = plus+pref[i][0]; plus = 0; res += diff; } else{ res += pref[i][0]; } if(res+pref[i][1] <= 0){ long long diff = res; res = 0; neg += pref[i][1]+diff; } else if(neg+pref[i][1] >= 0){ long long diff = neg+pref[i][1]; neg = 0; res += diff; } else{ res += pref[i][1]; } // cout << res << ' ' << plus << ' ' << neg << '\n'; 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...