Submission #30041

#TimeUsernameProblemLanguageResultExecution timeMemory
30041samir_droubiWatching (JOI13_watching)C++14
0 / 100
1000 ms5976 KiB
#include <bits/stdc++.h> using namespace std; int n,p,q; const int mxn=1005; int dp[mxn][mxn]; int a[mxn]; int l[mxn]; int l2[mxn]; int calc(int i,int u) { if( u > p )return (1e9); if(i == 0 ) return 0; int ans = calc( l[i] - 1 , u + 1 ); ans = min(ans , 1 + calc( l2[i] - 1 , u ) ); return dp[i][u] = ans; } bool check(int w) { memset(dp,-1,sizeof dp); l[0] = 1; l2[0] = 1; for(int i = 1; i <= n ; ++i) { l[i] = l[i - 1]; l2[i] = l2[i - 1]; while(a[i] - a[ l[i] ] + 1 > w) ++l[i]; while(a[i] - a[ l2[i] ] + 1 > 2*w) ++l2[i]; } return calc( n , 0 ) <= q; } void bs() { int l=1; int r=(1e9); int ans=-1; while( l <= r ) { int md = ( l + r ) / 2; if( check( md ) )r = md - 1 , ans = md; else l = md + 1; } printf("%d\n",ans); } int main() { scanf("%d%d%d",&n,&p,&q); for(int i = 1 ; i <= n ; ++i ) scanf("%d",&a[i]); sort( a + 1 , a + n + 1 ); bs(); return 0; }

Compilation message (stderr)

watching.cpp: In function 'int main()':
watching.cpp:46:29: 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:48:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&a[i]);
                          ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...