Submission #584844

#TimeUsernameProblemLanguageResultExecution timeMemory
584844jack715Holiday (IOI14_holiday)C++14
47 / 100
5084 ms5708 KiB
#include"holiday.h"
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define pp pop_back
#define mp make_pair
#define bb back
#define ff first
#define ss second

using namespace std;

ll findtravel(int l, int r, int st) {
    if (l >= st) 
        return r-st;
    if (r <= st) 
        return st-l;
    return min(abs(st-l)*2+abs(st-r), abs(st-r)*2+abs(st-l));
}

long long int findMaxAttraction(int n, int start, int d, int attraction[]) {
    ll ans = 0, D = d, travel, now;
    multiset<int> nums;
    for (int i = 0; i <= start; i++) {
        nums.clear(), now = 0;
        for (int j = i; j < start; j++)
            now += attraction[j], nums.insert(attraction[j]);
        for (int j = start; j < n; j++) {
            nums.insert(attraction[j]), now += attraction[j];
            travel = findtravel(i, j, start);
            if (D-travel <= 0) continue;
            while (nums.size() > D-travel) 
                now -= *nums.begin(), nums.erase(nums.begin());
            ans = max(ans, now);
        }
    }
    return ans;
}

Compilation message (stderr)

holiday.cpp: In function 'long long int findMaxAttraction(int, int, int, int*)':
holiday.cpp:32:32: warning: comparison of integer expressions of different signedness: 'std::multiset<int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   32 |             while (nums.size() > D-travel)
      |                    ~~~~~~~~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...