Submission #1166981

#TimeUsernameProblemLanguageResultExecution timeMemory
1166981HappyCapybaraHoliday (IOI14_holiday)C++20
47 / 100
5094 ms5856 KiB
#include"holiday.h" #include<bits/stdc++.h> using namespace std; #define ll long long int n; vector<int> a; ll solve(int s, int d, bool l){ ll res = 0; int k = d+1; multiset<int> best; ll cur = 0; int x = 1; if (l) x = -1; for (int i=0; abs(i)<d; i+=x){ if (s+i >= n || s+i < 0) break; k--; if (best.size() < k || a[s+i] > *best.begin()){ best.insert(a[s+i]); cur += a[s+i]; } while (best.size() > k){ cur -= *best.begin(); best.erase(best.begin()); } res = max(res, cur); } return res; } ll findMaxAttraction(int n, int start, int d, int attraction[]){ ::n = n; a.resize(n); for (int i=0; i<n; i++) a[i] = attraction[i]; if (start == 0) return solve(0, d, false); ll res = 0; for (int i=0; i<d; i++){ if (start+i < n) res = max(res, solve(start+i, d-i, true)); if (start-i >= 0) res = max(res, solve(start-i, d-i, false)); } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...