제출 #473092

#제출 시각아이디문제언어결과실행 시간메모리
473092nicolaalexandra구경하기 (JOI13_watching)C++14
0 / 100
7 ms8268 KiB
#include <bits/stdc++.h> #define DIM 2010 #define INF 1000000000 using namespace std; int v[DIM],dp[DIM][DIM]; int n,p,q,i; int get_poz (int x){ int st = 1, dr = n, sol = 0; while (st <= dr){ int mid = (st+dr)>>1; if (v[mid] >= x){ sol = mid; dr = mid-1; } else st = mid+1; } return sol; } int verif (int val){ for (int i=1;i<=n;i++){ int poz = get_poz (v[i] - val + 1); int poz2 = get_poz (v[i] - 2 * val + 1); for (int j=0;j<=p;j++){ dp[i][j] = dp[poz2-1][j] + 1; if (j) dp[i][j] = min (dp[i][j],dp[poz-1][j-1]); } } if (dp[n][p] <= q) return 1; return 0; } int main (){ //ifstream cin ("date.in"); //ofstream cout ("date.out"); cin>>n>>p>>q; for (i=1;i<=n;i++) cin>>v[i]; sort (v+1,v+n+1); p = min (p,n), q = min (q,n); int st = 0, dr = INF, sol = 0; while (st <= dr){ int mid = (st+dr)>>1; if (verif(mid)){ sol = mid; dr = mid-1; } else st = mid+1; } cout<<sol; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...