Submission #1019797

#TimeUsernameProblemLanguageResultExecution timeMemory
1019797NValchanovHoliday (IOI14_holiday)C++17
47 / 100
318 ms1684 KiB
#include <bits/stdc++.h> #include "holiday.h" using namespace std; typedef long long ll; ll start0(int n, int d, int a[]) { ll ans = 0; map < ll, ll > m; for(int i = 0; i < n; i++) { m[a[i]]++; ll ost = d - i; ll sum = 0; for(ll val = 100; val >= 1; val--) { if(ost == 0) break; ll cur = min(ost, m[val]); sum += cur * val; ost -= cur; } ans = max(ans, sum); } return ans; } ll slow(int n, int start, int d, int a[]) { ll ans = 0; for(int left = 0; left <= start; left++) { multiset < ll > s; ll sum = 0; for(int i = left; i < start; i++) { s.insert(a[i]); sum += a[i]; } for(int right = start; right < n; right++) { s.insert(a[right]); sum += a[right]; ll left_len = start - left; ll right_len = right - start; ll ost = d - (left_len + right_len + min(left_len, right_len)); if(ost <= 0) break; while(s.size() > ost) { auto it = s.begin(); sum -= *it; s.erase(it); } ans = max(ans, sum); } } return ans; } long long int findMaxAttraction(int n, int start, int d, int a[]) { if(n <= 3000) return slow(n, start, d, a); else return start0(n, d, a); }

Compilation message (stderr)

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