Submission #50985

#TimeUsernameProblemLanguageResultExecution timeMemory
50985TalantHoliday (IOI14_holiday)C++17
47 / 100
5012 ms5620 KiB
#include"holiday.h" #include <bits/stdc++.h> #define fr first #define sc second #define mk make_pair #define pb push_back using namespace std; const int N = (1e6 + 5); long long ans; int u[N]; multiset<int> st; long long int findMaxAttraction(int n, int start, int d, int attraction[]) { if (start == 0 && n > 3000) { for (int i = 0; i < n; i ++) { u[attraction[i]] ++; int cn = d - i; if (cn <= 0) continue; long long sum = 0; for (int j = 100; j >= 1; j --) { int o = min(u[j],cn); sum += (o * 1ll * j); cn -= o; } ans = max(ans,sum); } return ans; } else { for (int i = 0; i <= start; i ++) { st.clear(); long long sum = 0; for (int j = i; j < n; j ++) { st.insert(attraction[j]); sum += attraction[j]; int dist = 0; if (j <= start) dist = d - (start - i); else if (start <= i) dist = d - (j - start); else dist = d - ((abs(start - i) + abs(j - start)) + min(abs(start - i),abs(j - start))); if (dist <= 0) break; while (!st.empty() && st.size() > dist) { sum -= (*st.begin()); st.erase(st.begin()); } ans = max(ans,sum); } } return ans; } }

Compilation message (stderr)

holiday.cpp: In function 'long long int findMaxAttraction(int, int, int, int*)':
holiday.cpp:56:57: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                         while (!st.empty() && st.size() > dist) {
                                               ~~~~~~~~~~^~~~~~
grader.cpp: In function 'int main()':
grader.cpp:7:12: warning: variable 'n_s' set but not used [-Wunused-but-set-variable]
     int i, n_s;
            ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...