이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "holiday.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define all(x) x.begin(),x.end()
typedef long long ll;
#define maxn 100005
int n,s,d,a[maxn],cantake,lptr,rptr;
ll pfx[maxn],ans,sm;
multiset<ll> in,out;
void fix(){
while(in.size()>cantake){
auto it=in.begin();
sm-=*it;
out.insert(*it);
in.erase(it);
}
while(in.size()<cantake&&!out.empty()){
auto it=--out.end();
sm+=*it;
in.insert(*it);
out.erase(it);
}
}
void add(int x){
sm+=x;
in.insert(x);
fix();
}
void rem(int x){
if(out.find(x)!=out.end()){
out.erase(out.find(x));
}
else{
in.erase(in.find(x));
sm-=x;
fix();
}
}
void dnc(int l,int r,int optl,int optr){
if(l>r)return;
int m=(l+r)>>1;
while(lptr<m)rem(a[lptr++]);
while(m<lptr)add(a[--lptr]);
while(rptr<optl-1)add(a[++rptr]);
while(optl-1<rptr)rem(a[rptr--]);
ll mx=0,best=0;
for(int i=optl;i<=optr;++i){
add(a[i]);
cantake=max(d-(s-m+i-m),0);
fix();
if(sm>=mx)best=i,mx=sm;
}
rptr=optr;
ans=max(ans,mx);
dnc(l,m-1,optl,best);
dnc(m+1,r,best,optr);
}
void solve(){
in.clear();out.clear();
sm=cantake=0;
lptr=1,rptr=s;
for(int i=s;i>=1;--i){
add(a[i]);
cantake=max(d-(s-i),0);
fix();
ans=max(ans,sm);
}
dnc(1,s-1,s,n);
}
ll findMaxAttraction(int _n,int _s,int _d,int _a[]){
n=_n,s=_s+1,d=_d;
for(int i=1;i<=n;++i)a[i]=_a[i-1];
solve();
for(int i=1;i<=n/2;++i)swap(a[i],a[n-i+1]);
s=n-s+1;
solve();
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
holiday.cpp: In function 'void fix()':
holiday.cpp:16:17: warning: comparison of integer expressions of different signedness: 'std::multiset<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
16 | while(in.size()>cantake){
| ~~~~~~~~~^~~~~~~~
holiday.cpp:22:17: warning: comparison of integer expressions of different signedness: 'std::multiset<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
22 | while(in.size()<cantake&&!out.empty()){
| ~~~~~~~~~^~~~~~~~
# | 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... |