Submission #1328352

#TimeUsernameProblemLanguageResultExecution timeMemory
1328352kawhietHoliday (IOI14_holiday)C++20
47 / 100
5091 ms2276 KiB
#include <bits/stdc++.h>
#include "holiday.h"
using namespace std;

priority_queue<long long, vector <long long>, greater<long long>> q;

long long findMaxAttraction(int n, int start, int d, int attraction[]) {    
    long long res = 0;
    for (int l = start; l >= 0; l--) {
        long long sum = 0;
        priority_queue<long long, vector<long long>, greater<long long>> temp;
        swap(q, temp);
        for (int i = l; i <= start; i++) {
            q.push(attraction[i]);
            sum += attraction[i];
            int req = d - (start - l);
            if (req <= 0) {
                sum = -1;
                break;
            }
            while (q.size() > req) {
                sum -= q.top();
                q.pop();
            }
            res = max(res, sum);
        }
        if (sum == -1) {
            continue;
        }
        for (int r = start + 1; r < n; r++) {
            q.push(attraction[r]);
            sum += attraction[r];
            int req = d - (r - l + min(start - l, r - start));
            if (req <= 0) {
                break;
            }
            while (q.size() > req) {
                sum -= q.top();
                q.pop();
            }
            res = max(res, sum);
        }
    }
    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...