Submission #289669

# Submission time Handle Problem Language Result Execution time Memory
289669 2020-09-02T22:20:46 Z rocks03 Watching (JOI13_watching) C++14
50 / 100
1000 ms 35192 KB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pld pair<long double, int>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pb push_back
#define ff first
#define ss second
#define SZ(x) ((int)(x).size())
#define ld long double
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const int MAXN = 2e3+100;
int N, P, Q;
ll a[MAXN], memo[MAXN][MAXN];

void read(){
    cin >> N >> P >> Q;
    for(int i = 0; i < N; i++) cin >> a[i];
}

int f(int q, int ind, ll w){
    if(ind == N){
        return 0;
    }
    if(memo[q][ind] != -1){
        return memo[q][ind];
    }
    int ans = P+1;
    if(q){
        int j = upper_bound(a+ind, a+N, a[ind]+2*w-1) - a;
        ans = min(ans, f(q-1, j, w));
    }
    int j = upper_bound(a+ind, a+N, a[ind]+w-1) - a;
    ans = min(ans, f(q, j, w) + 1);
    memo[q][ind] = ans;
    return memo[q][ind];
}

bool good(ll w){
    if(P + Q >= N) return true;
    memset(memo, -1, sizeof(memo));
    return (f(Q, 0, w) <= P);
}

void solve(){
    read();
    sort(a, a+N);
    ll l = 0, r = 1e10;
    while(r - l > 1){
        ll m = (l + r) / 2;
        if(good(m)) r = m;
        else l = m;
    }
    cout << r;
}

int main(){
    ios_base::sync_with_stdio(false);
    solve();
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 163 ms 34944 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 170 ms 34816 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 165 ms 35072 KB Output is correct
8 Correct 168 ms 34936 KB Output is correct
9 Correct 167 ms 34816 KB Output is correct
10 Correct 165 ms 34816 KB Output is correct
11 Correct 168 ms 34816 KB Output is correct
12 Correct 165 ms 34808 KB Output is correct
13 Correct 161 ms 34936 KB Output is correct
14 Correct 169 ms 34936 KB Output is correct
15 Correct 162 ms 34936 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 164 ms 34816 KB Output is correct
2 Correct 1 ms 384 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 165 ms 34948 KB Output is correct
8 Correct 558 ms 35064 KB Output is correct
9 Correct 274 ms 35036 KB Output is correct
10 Correct 274 ms 35064 KB Output is correct
11 Execution timed out 1092 ms 35192 KB Time limit exceeded
12 Halted 0 ms 0 KB -