Submission #112727

#TimeUsernameProblemLanguageResultExecution timeMemory
112727brcodeWatching (JOI13_watching)C++14
50 / 100
744 ms262144 KiB
#include <iostream> #include <algorithm> #include <vector> using namespace std; const int MAXN = 2010; const int MAXP = 1e5+5; /* */ vector<int> arr; int dp[MAXN][MAXP]; int n,p,q; bool check(int x){ for(int i=0;i<=n;i++){ for(int j=0;j<=p;j++){ dp[i][j] = 1e9; } } dp[0][0] = 0; for(int i=1;i<=n;i++){ int curr = arr[i]; int target1 = arr[i] - x+1; int pos1 = lower_bound(arr.begin(),arr.end(),target1)-arr.begin()-1; int target2 = arr[i]-(2*x)+1; int pos2 = lower_bound(arr.begin(),arr.end(),target2)-arr.begin()-1; if(x == 14){ // cout<<target1<<" "<<pos2<<endl; } // for(int j=0;j<=p;j++){ if(j){ dp[i][j] = min(dp[i][j],dp[pos1][j-1]); } dp[i][j] = min(dp[i][j],dp[pos2][j]+1); } } for(int i=0;i<=p;i++){ //cout<<dp[n][i]<<endl; if(dp[n][i]<=q){ return true; } } return false; } int main() { cin>>n>>p>>q; for(int i=1;i<=n;i++){ int x; cin>>x; arr.push_back(x); } arr.push_back(-1000000000); sort(arr.begin(),arr.end()); int l = 0; int r = 1e9; int ans = 0; while(l<=r){ int mid = (l+r)/2; if(check(mid)){ ans = mid; r = mid-1; }else{ l = mid+1; } } cout<<ans<<endl; }

Compilation message (stderr)

watching.cpp: In function 'bool check(int)':
watching.cpp:21:13: warning: unused variable 'curr' [-Wunused-variable]
         int curr = arr[i];
             ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...