Submission #172675

#TimeUsernameProblemLanguageResultExecution timeMemory
172675tselmegkhDivide and conquer (IZhO14_divide)C++14
0 / 100
1076 ms2652 KiB
#include<bits/stdc++.h> using namespace std; const int N = 1e5 + 5; int x[N], g[N], d[N]; int main(){ int n; cin >> n; long long curenergy = 0, curgold = 0; for(int i = 1; i <= n; i++){ cin >> x[i] >> g[i] >> d[i]; curgold += g[i]; curenergy += d[i]; } int l = 1, r = n; while(x[r] - x[l] > curenergy){ if(r - l == 1){ if(g[r] > g[l]){ curgold -= g[l]; curenergy -= d[l]; l++; }else{ curgold -= g[r]; curenergy -= d[r]; r--; } }else{ if(curenergy - d[l] >= x[r] - x[l + 1] && curenergy - d[r] >= x[r - 1] - x[l]){ if(g[r] > g[l]){ curgold -= g[l]; curenergy -= d[l]; l++; }else{ curgold -= g[r]; curenergy -= d[r]; r--; } }else if(curenergy - d[l] >= x[r] - x[l + 1]){ curgold -= g[l]; curenergy -= d[l]; l++; }else if(curenergy - d[r] >= x[r - 1] - x[l]){ curgold -= g[r]; curenergy -= d[r]; r--; } } } cout << curgold << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...