Submission #1299449

#TimeUsernameProblemLanguageResultExecution timeMemory
1299449khoavn2008Watching (JOI13_watching)C++17
50 / 100
1096 ms16188 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ld double #define FOR(i,l,r) for(int i = (l), _r = (r); i <= _r; i++) #define FORNG(i,r,l) for(int i = (r), _l = (l); i >= _l; i--) #define REP(i,r) for(int i = 0, _r = (r); i < _r; i++) #define endl '\n' #define fi first #define se second #define pb push_back #define size(v) ((int)(v).size()) #define all(v) (v).begin(),(v).end() #define MASK(x) (1LL << (x)) #define BIT(x, i) (((x) >> (i)) & 1) const ll MOD = 1e9 + 7, N = 2036, LOG = 20, LIM = 30; const int INF = 1e9 + 36; int n,p,q,a[N]; int dp[N][N]; bool check(int w){ FOR(i,0,n)FOR(j,0,min(n, p))dp[i][j] = INF; dp[0][0] = 0; FOR(i,1,n)FOR(cntUsedP,0,min(i, p)){ FORNG(t,i,1){ if(a[i] - a[t] + 1 > w * 2)break; if(a[i] - a[t] + 1 <= w && cntUsedP)dp[i][cntUsedP] = min(dp[i][cntUsedP], dp[t - 1][cntUsedP - 1]); dp[i][cntUsedP] = min(dp[i][cntUsedP], dp[t - 1][cntUsedP] + 1); } } FOR(i,0,min(n, p)){ if(dp[n][i] <= q)return 1; } return 0; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>p>>q; FOR(i,1,n)cin>>a[i]; sort(a + 1, a + 1 + n); int l = 1, r = 1e9, ans = -1; while(l <= r){ int mid = (l + r) >> 1; if(check(mid))ans = mid, r = mid - 1; else l = mid + 1; } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...