답안 #282216

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
282216 2020-08-24T06:57:12 Z jainbot27 구경하기 (JOI13_watching) C++17
100 / 100
511 ms 16332 KB
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n, p, q;
    cin >> n >> p >> q;
    if(p + q >= n) {
        cout <<"1\n";
        return 0;
    }
    vector<int> a(n);
    for(int&A:a) cin >> A;
    sort(a.begin(), a.end());
    int lo = 1, hi = 1e9;
    while(lo <= hi){
        int mid = (lo + hi) / 2;
        vector<vector<int>> dp(n + 1, vector<int>(n + 1, -1));
        vector<int> P(n + 1), Q(n + 1);
        for(int i=0; i < n; i++){
            P[i] = (lower_bound(a.begin(), a.end(), a[i] + mid) - a.begin()) - i;
        }
        for(int i=0; i < n; i++){
            Q[i] = (lower_bound(a.begin(), a.end(), a[i] + mid * 2) - a.begin()) - i;
        }
        dp[0][0] = 0;
        bool g = 0;
        for(int i=0; i <= p; i++){
            for(int j=0; j <= q; j++){
                if(dp[i][j] == n){
                    g = 1;
                }
                if(dp[i][j] != -1){
                    dp[i + 1][j] = max(dp[i+1][j], P[dp[i][j]] + dp[i][j]);
                    dp[i][j + 1] = max(dp[i][j + 1], Q[dp[i][j]] + dp[i][j]);
                }
            }
        }
        g?hi=mid-1:lo=mid+1;
    }
    cout << lo << endl;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 1 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Correct 1 ms 256 KB Output is correct
6 Correct 1 ms 256 KB Output is correct
7 Correct 1 ms 384 KB Output is correct
8 Correct 1 ms 384 KB Output is correct
9 Correct 1 ms 384 KB Output is correct
10 Correct 1 ms 384 KB Output is correct
11 Correct 1 ms 384 KB Output is correct
12 Correct 2 ms 384 KB Output is correct
13 Correct 1 ms 384 KB Output is correct
14 Correct 1 ms 384 KB Output is correct
15 Correct 1 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 266 ms 16280 KB Output is correct
2 Correct 1 ms 256 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 282 ms 16248 KB Output is correct
8 Correct 320 ms 16220 KB Output is correct
9 Correct 320 ms 16280 KB Output is correct
10 Correct 354 ms 16232 KB Output is correct
11 Correct 336 ms 16332 KB Output is correct
12 Correct 511 ms 16216 KB Output is correct
13 Correct 287 ms 16248 KB Output is correct
14 Correct 306 ms 16220 KB Output is correct
15 Correct 289 ms 16248 KB Output is correct