Submission #517002

#TimeUsernameProblemLanguageResultExecution timeMemory
517002amukkalirHoliday (IOI14_holiday)C++17
23 / 100
5085 ms2084 KiB
#include <bits/stdc++.h> #include"holiday.h" using namespace std; typedef long long ll; const int nax = 20; int n; int s, d; int cost (int l, int r) { return (r-l) + min(abs(s-l), abs(r-s)); } bool ok (int mask) { int l=n, r=0; for(int i=0; (1<<i)<=mask; i++) { if(mask & (1<<i)) { l = min(l, i); r = max(r, i); } } int travel = (r-l) + min(abs(s-l), abs(r-s)); return travel + __builtin_popcount(mask) <= d; } long long int findMaxAttraction(int N, int S, int D, int attraction[]) { n = N; s = S; d = D; ll ans = 0; priority_queue<ll, vector<ll>, greater<ll>> pq; ll sum = 0; for(int l=0; l<=s; l++) { while(!pq.empty()) pq.pop(); for(int i=s;i<n;i++){ int rem = d - cost(l,i); if(d <= 0) break; sum += attraction[i]; pq.push(attraction[i]); while(pq.size() > rem) { sum -= pq.top(); pq.pop(); } ans = max(ans, sum); } } return ans; } /* k terbesar O(N) sliding window + binser deque rangenya difix */

Compilation message (stderr)

holiday.cpp: In function 'long long int findMaxAttraction(int, int, int, int*)':
holiday.cpp:43:29: warning: comparison of integer expressions of different signedness: 'std::priority_queue<long long int, std::vector<long long int>, std::greater<long long int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   43 |             while(pq.size() > rem) {
      |                   ~~~~~~~~~~^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...