이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "bits/stdc++.h"
#include "ricehub.h"
#define MAXN 100009
#define INF 1000000007
#define mp(x,y) make_pair(x,y)
#define all(v) v.begin(),v.end()
#define pb(x) push_back(x)
#define wr cout<<"----------------"<<endl;
#define ppb() pop_back()
#define tr(ii,c) for(typeof((c).begin()) ii=(c).begin();ii!=(c).end();ii++)
#define ff first
#define ss second
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
const int error=0xFFFFFFF;
int n,l,mx=1;
ll b;
ll arr[MAXN],par[MAXN];
ll sum(int left,int right){
return par[right]-par[left-1];
}
int ok(int type,int ind,int x){
int st=0,en=x;
while(st+1<en){
int mid=(st+en)>>1;
int dim=x-mid;
ll budget=0;
ll pul=0;
if(ind-dim<1){
st=mid;
continue;
}
if(ind+mid-1>n){
en=mid;
continue;
}
if(dim)
budget=(dim*arr[ind]-sum(ind-dim,ind-1));
if(mid)
pul=(sum(ind,ind+mid-1)-mid*arr[ind]);
if(pul+budget<=b)
return 1;
if(type==1)
en=mid;
else
st=mid;
}
for(int mid=st;mid<=en;mid++){
int dim=x-mid;
ll budget=0;
ll pul=0;
if(ind-dim<1 or ind+mid-1>n)
continue;
if(dim)
budget=(dim*arr[ind]-sum(ind-dim,ind-1));
if(mid and ind+mid-1<=n)
pul=(sum(ind,ind+mid-1)-mid*arr[ind]);
if(pul+budget<=b)
return 1;
}
return 0;
}
int go(int x){
int st=1,en=n;
while(st+1<en){
int mid=(st+en)>>1;
if(ok(1,x,mid) or ok(2,x,mid))
st=mid;
else
en=mid;
}
for(int i=en;i>=st;i--)
if(ok(1,x,i) or ok(2,x,i))
return i;
return error;
}
int besthub(int R, int L, int X[], long long B){
n=R;l=L;b=B;
for(int i=0;i<n;i++)
arr[i+1]=X[i];
for(int i=1;i<=n;i++)
par[i]=par[i-1]+arr[i];
for(int i=1;i<=n;i++)
umax(mx,go(i));
return mx;
}
| # | 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... |