이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include"holiday.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
struct PQ{
priority_queue<int, vector<int>, greater<int>> pq;
int sum;
PQ(){
sum=0;
}
void push(int x){
sum+=x;
pq.push(x);
}
int size(){ return pq.size(); }
int top(){ return pq.top(); }
void pop(){
assert(size());
sum-=pq.top();
pq.pop();
}
};
void solve(int32_t n, int32_t start, int32_t d, int32_t a[], int &ans){
for (int l=0; l<=start; ++l){
PQ pq;
for (int i=l; i<=start; ++i) pq.push(a[i]);
int cnt=d-(start-l);
if (cnt<=0) continue;
while (pq.size()>cnt) pq.pop();
ans=max(ans, pq.sum);
cnt=d-(start-l)-(start+1-l);
for (int r=start+1; r<n && cnt>0; ++r, --cnt){
pq.push(a[r]);
while (pq.size()>cnt) pq.pop();
ans=max(ans, pq.sum);
}
}
}
int findMaxAttraction(int32_t n, int32_t start, int32_t d, int32_t a[]) {
int ans=0;
solve(n, start, d, a, ans);
reverse(a, a+n);
start=n-start-1;
if (n<=3000) solve(n, start, d, a, ans);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |