This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#include <algorithm>
using namespace std;
int N,P,Q,A[2020];
int D[2020][2020];
bool chk(int w)
{
if (w <= 0) return false;
int i,j,k,l;
for (i=j=k=1;i<=N;i++){
while (A[i] - A[j] >= w) j++;
while (A[i] - A[k] >= w * 2) k++;
D[i][0] = D[j-1][0] + 1;
for (l=1;l<=Q;l++) D[i][l] = min(D[j-1][l] + 1, D[k-1][l-1]);
}
for (l=0;l<=Q;l++) if (D[N][l] <= P) return true;
return false;
}
int main()
{
int i;
scanf ("%d %d %d",&N,&P,&Q);
for (i=1;i<=N;i++) scanf ("%d",&A[i]);
sort(A+1,A+1+N);
if (N <= P + Q) printf ("1");
else{
int l = 1, r = 1000000000, m;
while (l < r){
m = (l + r) / 2;
if (chk(m)) r = m - 1;
else l = m + 1;
}
while (chk(m)) m--;
while (!chk(m)) m++;
printf ("%d",m);
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |