Submission #524579

#TimeUsernameProblemLanguageResultExecution timeMemory
524579bluePotatoes and fertilizers (LMIO19_bulves)C++17
100 / 100
316 ms34468 KiB
#include <iostream> #include <vector> #include <set> using namespace std; using ll = long long; using vll = vector<ll>; #define sz(x) int(x.size()) int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; vll x(1+N); ll basicCost = 0; x[0] = 0; for(int i = 1; i <= N; i++) { ll a, b; cin >> a >> b; x[i] = x[i-1] + a - b; } for(int i = 1; i < N; i++) { if(x[i] < 0) { basicCost += 0 - x[i]; x[i] = 0; } if(x[i] > x[N]) { basicCost += x[i] - x[N]; x[i] = x[N]; } } ll ans0 = 0; multiset<ll> points; for(int i = 1; i <= N; i++) { ans0 += x[i]; points.insert(x[i]); points.insert(x[i]); points.erase(points.find(*points.rbegin())); } ll curr_sl = -N; ll answer = basicCost + ans0; points.insert(0); while(sz(points) > 1) { ll u = *points.begin(); points.erase(points.begin()); ll v = *points.begin(); answer += (v - u) * curr_sl; curr_sl++; } cout << answer << '\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...