이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e5+3;
int v[MAXN];
ll ps[MAXN];
int n, m;
int ini, fim;
ll x;
ll soma(int ini, int fim) { if(fim<ini) return 0; return ps[fim]- (ini==0 ? 0 : ps[ini-1]); }
bool testa(int k) {
for(int fim=k-1; fim<n; fim++) {
int ini=fim-k+1;
int mid=(ini+fim)/2;
ll aa=v[mid]; aa*=(mid-ini+1); aa-=soma(ini, mid);
ll bb=soma(mid+1, fim); if(mid<fim) bb-=v[mid]*(ll)(fim-mid);
// printf("test %d %d [%d] > m %d > %lld %lld > %lld\n", ini, fim, k, mid, aa, bb, aa+bb);
if(aa+bb<=x) return 1;
}
return 0;
}
int besthub(int N, int M, int V[], ll X)
{
n=N; m=M; x=X;
for(int i=0; i<n; i++) v[i]=V[i];
ps[0]=v[0]; for(int i=1; i<n; i++) ps[i]=ps[i-1]+v[i];
int tam=0;
for(int i=n; i>0; i/=2) while(tam+i<=n&&testa(tam+i)) tam+=i;
return tam;
}
# | 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... |