Submission #77751

#TimeUsernameProblemLanguageResultExecution timeMemory
77751nxteruWatching (JOI13_watching)C++14
100 / 100
690 ms16592 KiB
#include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; int n,p,q,a[2005],dp[2005][2005]; bool solve(int w){ if(p+q>=n)return true; for(int i=0;i<=n;i++){ for(int j=0;j<=p;j++){ dp[i][j]=-1; } } dp[0][p]=q; for(int i=0;i<n;i++){ for(int j=0;j<=p;j++){ if(dp[i][j]>=0){ if(dp[i][j]>0){ int k=upper_bound(a,a+n,a[i]+w*2-1)-a; dp[k][j]=max(dp[k][j],dp[i][j]-1); } if(j>0){ int k=upper_bound(a,a+n,a[i]+w-1)-a; dp[k][j-1]=max(dp[k][j-1],dp[i][j]); } } } } for(int i=0;i<=p;i++){ if(dp[n][i]>=0)return true; } return false; } int main(void){ scanf("%d%d%d",&n,&p,&q); for(int i=0;i<n;i++)scanf("%d",a+i); sort(a,a+n); int r=0,l=1000000000; while(l-r>1){ int m=(r+l)/2; if(solve(m))l=m; else r=m; } printf("%d\n",l); }

Compilation message (stderr)

watching.cpp: In function 'int main()':
watching.cpp:35:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%d",&n,&p,&q);
     ~~~~~^~~~~~~~~~~~~~~~~~~
watching.cpp:36:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(int i=0;i<n;i++)scanf("%d",a+i);
                         ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...