Submission #129515

#TimeUsernameProblemLanguageResultExecution timeMemory
129515antimirageHoliday (IOI14_holiday)C++14
30 / 100
5099 ms5496 KiB
#include "holiday.h" #include <bits/stdc++.h> using namespace std; multiset <int> st; inline long long max (long long a, long long b) { return a < b ? b : a; } long long int findMaxAttraction(int n, int start, int d, int a[]) { long long ans = 0, sum = 0; if (start == 0) { for (int i = 0; i < n; i++) { if (i >= d) break; st.insert(a[i]); sum += a[i]; int k = d - i; while (st.size() > k) { sum -= *st.begin(); st.erase(st.begin()); } ans = max(ans, sum); } } else { for (int x = 0; x <= d; x++) { long long res1 = 0, res2 = 0; st.clear(); sum = 0; int rem = d - x; for (int i = 0; i < x; i++) { if (start + i >= n) break; st.insert( a[start + i] ); sum += a[start + i]; int k = x - i; while (st.size() > k) { sum -= *st.begin(); st.erase(st.begin()); } res1 = max(res1, sum); } st.clear(); sum = 0; for (int i = 1; i * 2 <= rem; i++) { if (start - i < 0) break; st.insert( a[start - i] ); sum += a[start - i]; int k = rem - i * 2; while (st.size() > k) { sum -= *st.begin(); st.erase(st.begin()); } res2 = max(res2, sum); } ans = max(ans, res1 + res2); res1 = 0, res2 = 0; st.clear(); sum = 0; for (int i = 0; i * 2 <= x; i++) { if (start + i >= n) break; st.insert( a[start + i] ); sum += a[start + i]; int k = x - i * 2; while (st.size() > k) { sum -= *st.begin(); st.erase(st.begin()); } res1 = max(res1, sum); } st.clear(); sum = 0; for (int i = 1; i < rem; i++) { if (start - i < 0) break; st.insert( a[start - i] ); sum += a[start - i]; int k = rem - i; while (st.size() > k) { sum -= *st.begin(); st.erase(st.begin()); } res2 = max(res2, sum); } ans = max(ans, res1 + res2); } } return ans; } /** 5 2 7 10 2 20 30 1 **/

Compilation message (stderr)

holiday.cpp: In function 'long long int findMaxAttraction(int, int, int, int*)':
holiday.cpp:22:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    while (st.size() > k) {
           ~~~~~~~~~~^~~
holiday.cpp:45:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (st.size() > k) {
            ~~~~~~~~~~^~~
holiday.cpp:60:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (st.size() > k) {
            ~~~~~~~~~~^~~
holiday.cpp:80:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (st.size() > k) {
            ~~~~~~~~~~^~~
holiday.cpp:96:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (st.size() > k) {
            ~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...