Submission #232928

# Submission time Handle Problem Language Result Execution time Memory
232928 2020-05-18T16:54:11 Z thebes Sparklers (JOI17_sparklers) C++14
0 / 100
5 ms 384 KB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<double,double> pdd;
typedef vector<int> vi;
#define F first
#define S second
#define pb push_back

const int MN = 1005;
int N, K, T, i, j, lo, hi, mid, arr[MN];
long double a[MN]; pii opt;

int main(){
    scanf("%d%d%d",&N,&K,&T);
    for(i=1;i<=N;i++)
        scanf("%d",&arr[i]);
    if(arr[N]==0){
        printf("0\n");
        return 0;
    }
    lo = 1, hi = 1e9;
    while(lo<hi){
        mid = (lo+hi)>>1;
        opt={K,K};
        a[K]=arr[K]-(long double)2*mid*K*T;
        for(i=1;i<=N;i++){
            a[i]=(long double)arr[i]-(long double)2*mid*i*T;
            if(i<K&&a[i]>a[opt.F]) opt.F=i;
            if(i>K&&a[i]<a[opt.S]) opt.S=i;
        }
        int l=K, r=K, mx, fl = 0, c;
        while(1){
            mx = r; c = r;
            while(r+1<=opt.S&&a[r+1]<=a[l]){
                mx=(a[mx]>a[r+1])?r+1:mx;
                r++;
            }
            r = c;
            if(mx>r){
                r = mx;
                continue;
            }
            mx = l; c = l;
            while(l-1>=opt.F&&a[r]<=a[l-1]){
                mx=(a[mx]<a[l-1])?l-1:mx;
                l--;
            }
            l = c;
            if(mx<l){
                l = mx;
                continue;
            }
            break;
        }
        if(l!=opt.F||r!=opt.S) fl=1;
        l=1, r=N;
        while(1){
            mx = r; c = r;
            while(r-1>=opt.S&&a[r-1]<=a[l]){
                mx=(a[mx]>a[r-1])?r-1:mx;
                r--;
            }
            r = c;
            if(mx<r){
                r = mx;
                continue;
            }
            mx = l; c = l;
            while(l+1<=opt.F&&a[r]<=a[l+1]){
                mx=(a[mx]<a[l+1])?l+1:mx;
                l++;
            }
            l = c;
            if(mx>l){
                l = mx;
                continue;
            }
            break;
        }
        if(l!=opt.F||r!=opt.S) fl=1;
        if(a[1]<a[N]) fl=1;
        if(fl) lo=mid+1;
        else hi=mid;
    }
    printf("%d\n",lo);
    return 0;
}

Compilation message

sparklers.cpp: In function 'int main()':
sparklers.cpp:17:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%d",&N,&K,&T);
     ~~~~~^~~~~~~~~~~~~~~~~~~
sparklers.cpp:19:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&arr[i]);
         ~~~~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 256 KB Output is correct
3 Correct 4 ms 256 KB Output is correct
4 Correct 4 ms 256 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 256 KB Output is correct
7 Correct 4 ms 384 KB Output is correct
8 Correct 4 ms 256 KB Output is correct
9 Correct 4 ms 256 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 4 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 4 ms 384 KB Output is correct
14 Correct 4 ms 384 KB Output is correct
15 Correct 4 ms 256 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 4 ms 256 KB Output is correct
18 Correct 5 ms 256 KB Output is correct
19 Correct 5 ms 384 KB Output is correct
20 Incorrect 4 ms 384 KB Output isn't correct
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 256 KB Output is correct
3 Correct 4 ms 256 KB Output is correct
4 Correct 4 ms 256 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 256 KB Output is correct
7 Correct 4 ms 384 KB Output is correct
8 Correct 4 ms 256 KB Output is correct
9 Correct 4 ms 256 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 4 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 4 ms 384 KB Output is correct
14 Correct 4 ms 384 KB Output is correct
15 Correct 4 ms 256 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 4 ms 256 KB Output is correct
18 Correct 5 ms 256 KB Output is correct
19 Correct 5 ms 384 KB Output is correct
20 Incorrect 4 ms 384 KB Output isn't correct
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 256 KB Output is correct
3 Correct 4 ms 256 KB Output is correct
4 Correct 4 ms 256 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 256 KB Output is correct
7 Correct 4 ms 384 KB Output is correct
8 Correct 4 ms 256 KB Output is correct
9 Correct 4 ms 256 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 4 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 4 ms 384 KB Output is correct
14 Correct 4 ms 384 KB Output is correct
15 Correct 4 ms 256 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 4 ms 256 KB Output is correct
18 Correct 5 ms 256 KB Output is correct
19 Correct 5 ms 384 KB Output is correct
20 Incorrect 4 ms 384 KB Output isn't correct
21 Halted 0 ms 0 KB -