Submission #582279

#TimeUsernameProblemLanguageResultExecution timeMemory
582279JosiaHoliday (IOI14_holiday)C++14
23 / 100
13 ms2060 KiB
#include <bits/stdc++.h>
#include"holiday.h"

using namespace std;






long long int findMaxAttraction(int n, int start, int d, int attraction[]) {
    assert(start == 0);
    map<int, int> bestAttractions;
    int res = 0;
    int sum = 0;
    int inUse = 0;
    for (int i = 0; i<min(d, n); i++) {
        sum += attraction[i]; bestAttractions[attraction[i]]++; inUse++;

        while (i + inUse > d) {
            sum -= (*bestAttractions.begin()).first; bestAttractions[(*bestAttractions.begin()).first]--; inUse--;
            if (bestAttractions[(*bestAttractions.begin()).first] == 0) bestAttractions.erase((*bestAttractions.begin()).first);
        }
        // cerr << i << " " << inUse << "\n";

        res = max(sum, res);
    }

    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...