Submission #590281

#TimeUsernameProblemLanguageResultExecution timeMemory
590281Dan4LifeHoliday (IOI14_holiday)C++17
23 / 100
5061 ms6212 KiB
#include <bits/stdc++.h> #if !defined(LOL) #include "holiday.h" #endif using namespace std; #define pb push_back #define sz(a) (int)a.size() #define all(a) a.begin(),a.end() const int maxn = (int)3000+10; const int maxd = (int)7500+10; int dp[maxn][maxd], dp2[maxn][maxd]; #define ll long long ll calc(deque<ll> &a, int d){ ll ans = 0, sum = 0; multiset<ll> S; S.clear(); for(int i = 0; i < sz(a); i++){ S.insert(a[i]); sum+=a[i]; int rem = d-i; rem = max(rem,0); while(sz(S)>rem) sum-=*S.begin(), S.erase(S.begin()); ans = max(ans, sum); } return ans; } long long int findMaxAttraction(int n, int s, int d, int a[]) { deque<ll> v; for(int i = s; i < n; i++) v.pb(a[i]); ll ans = calc(v,d); for(int i = s-1; i>=0; i--){ v.push_front(a[i]), ans = max(ans, calc(v,d-s+i)); } return ans; } #if defined(LOL) int main() { int n, start, d; int attraction[100000]; int i, n_s; n_s = scanf("%d %d %d", &n, &start, &d); for (i = 0 ; i < n; ++i) { n_s = scanf("%d", &attraction[i]); } printf("%lld\n", findMaxAttraction(n, start, d, attraction)); return 0; } #endif
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...