# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
116628 | 2019-06-13T09:09:44 Z | roseanne_pcy | 구경하기 (JOI13_watching) | C++14 | 993 ms | 16256 KB |
#include <bits/stdc++.h> #pragma GCC optimize ("O3") #pragma GCC target ("sse4") using namespace std; #define X first #define Y second #define pb push_back typedef pair<int, int> ii; typedef long long ll; int n; const int maxn = 2005; int arr[maxn]; int dp[maxn][maxn]; int w; int solve(int p, int q) { if(dp[p][q] != -1) return dp[p][q]; int ans = 0; if(p> 0) { int lst = solve(p-1, q); if(lst == n) { return dp[p][q] = n; } int rng = arr[lst+1]+w-1; int val = upper_bound(arr+1, arr+n+1, rng)-arr-1; ans = max(ans, val); } if(q> 0) { int lst = solve(p, q-1); if(lst == n) { return dp[p][q] = n; } int rng = arr[lst+1]+2*w-1; int val = upper_bound(arr+1, arr+n+1, rng)-arr-1; ans = max(ans, val); } return dp[p][q] = ans; } int main() { int p, q; scanf("%d %d %d", &n, &p, &q); for(int i = 1; i<= n; i++) scanf("%d", &arr[i]); sort(arr+1, arr+n+1); n = unique(arr+1, arr+n+1)-(arr+1); if(p+q>= n) { printf("1\n"); return 0; } int lo = 1, hi = arr[n]-arr[1]+1; while(lo< hi) { int mid = (lo+hi)/2; memset(dp, -1, sizeof dp); w = mid; if(solve(p, q) == n) hi = mid; else lo = mid+1; } printf("%d\n", lo); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 45 ms | 16128 KB | Output is correct |
2 | Correct | 2 ms | 384 KB | Output is correct |
3 | Correct | 69 ms | 16256 KB | Output is correct |
4 | Correct | 3 ms | 384 KB | Output is correct |
5 | Correct | 2 ms | 256 KB | Output is correct |
6 | Correct | 2 ms | 384 KB | Output is correct |
7 | Correct | 48 ms | 16000 KB | Output is correct |
8 | Correct | 41 ms | 16128 KB | Output is correct |
9 | Correct | 40 ms | 16128 KB | Output is correct |
10 | Correct | 93 ms | 16128 KB | Output is correct |
11 | Correct | 47 ms | 16096 KB | Output is correct |
12 | Correct | 42 ms | 16128 KB | Output is correct |
13 | Correct | 26 ms | 16128 KB | Output is correct |
14 | Correct | 36 ms | 16128 KB | Output is correct |
15 | Correct | 37 ms | 16128 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 84 ms | 16132 KB | Output is correct |
2 | Correct | 2 ms | 384 KB | Output is correct |
3 | Correct | 3 ms | 384 KB | Output is correct |
4 | Correct | 2 ms | 384 KB | Output is correct |
5 | Correct | 2 ms | 256 KB | Output is correct |
6 | Correct | 2 ms | 384 KB | Output is correct |
7 | Correct | 74 ms | 16092 KB | Output is correct |
8 | Correct | 213 ms | 16128 KB | Output is correct |
9 | Correct | 230 ms | 16248 KB | Output is correct |
10 | Correct | 239 ms | 16124 KB | Output is correct |
11 | Correct | 142 ms | 16128 KB | Output is correct |
12 | Correct | 993 ms | 16180 KB | Output is correct |
13 | Correct | 39 ms | 16120 KB | Output is correct |
14 | Correct | 47 ms | 16108 KB | Output is correct |
15 | Correct | 54 ms | 16000 KB | Output is correct |