이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
//#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;
int* a;
int n,l; long long b, T[2][100010], S[2];
vector<int> vx;
bool f(int x) {
if(x==1)return true;
int i;
long long s1=0, s2=0, c=x/2-(x-1-x/2);
for(i=0;i<x/2;i++) s1+=a[i];
for(i=x/2;i<x;i++) s2+=a[i];
long long r=vx[a[x/2]]*c-s1+s2;
for(i=x;i<n;i++) {
s1-=vx[a[i-x]], s2+=vx[a[i]];
s2-=vx[a[i-x+x/2]], s1+=vx[a[i-x+x/2]];
r=min(r,vx[a[i-x+1+x/2]]*c-s1+s2);
}
return r<=b;
}
int besthub(int R, int L, int X[], long long B)
{
vx.clear();
n=R,l=L,b=B,a=X;
for(int i=0;i<R;i++) vx.push_back(X[i]);
sort(vx.begin(),vx.end());
vx.erase(unique(vx.begin(),vx.end()),vx.end());
for(int i=0;i<R;i++) a[i]=lower_bound(vx.begin(),vx.end(),a[i])-vx.begin();
int lo=0,hi=R;
while(lo<hi){
int mid=(lo+hi+1)/2;
if(f(mid)) lo=mid;
else hi=mid-1;
}
return lo;
}
# | 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... |