Submission #473101

# Submission time Handle Problem Language Result Execution time Memory
473101 2021-09-15T06:51:34 Z nicolaalexandra Watching (JOI13_watching) C++14
0 / 100
5 ms 8268 KB
#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){

    int poz = 1 , poz2 = 1;
    for (int i=1;i<=n;i++){

        while (v[i] - v[poz] + 1 > val)
            poz++;
        while (v[i] - v[poz2] + 1 > 2*val)
            poz2++;
        //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 time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Runtime error 2 ms 332 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 8268 KB Output is correct
2 Runtime error 2 ms 392 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -