Submission #12949

#TimeUsernameProblemLanguageResultExecution timeMemory
12949gs13068Watching (JOI13_watching)C++98
100 / 100
328 ms16776 KiB
#include<cstdio> #include<algorithm> long long c[2002]; int x[2002]; int y[2002]; int d[2002][2002]; int main() { int l,r,mid; int i,j,n,a,b; scanf("%d%d%d",&n,&a,&b); for(i=1;i<=n;i++)scanf("%lld",&c[i]); std::sort(c+1,c+n+1); l=1; r=1e9; while(l<r) { mid=(l+r)/2; for(i=1;i<=n;i++) { x[i]=std::lower_bound(c+i+1,c+n+1,c[i]+mid)-c; y[i]=std::lower_bound(c+i+1,c+n+1,c[i]+mid+mid)-c; } x[n+1]=y[n+1]=n+1; for(i=0;i<=n&&i<=a;i++)for(j=0;i+j<=n&&j<=b;j++)d[i][j]=1; for(i=0;i<n&&i<=a;i++)for(j=0;i+j<n&&j<=b;j++) { d[i+1][j]=std::max(d[i+1][j],x[d[i][j]]); d[i][j+1]=std::max(d[i][j+1],y[d[i][j]]); } for(i=0;i<=n&&i<=a;i++) { for(j=0;i+j<=n&&j<=b;j++)if(d[i][j]>n)break; if(i+j<=n&&j<=b)break; } if(i<=n&&i<=a)r=mid; else l=mid+1; } printf("%d",l); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...