Submission #43416

# Submission time Handle Problem Language Result Execution time Memory
43416 2018-03-15T22:16:02 Z Hassoony Cake (CEOI14_cake) C++14
0 / 100
246 ms 7552 KB
#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int MX=250090;
int n,Q,st,a[MX],seg[MX*5],x,y;
vector<int>v;
string s;
char oo[MX];
void build(int node,int l,int r){
    if(l==r){
        seg[node]=a[l];
        return;
    }
    int mid=(l+r)/2;
    build(node*2,l,mid);
    build(node*2+1,mid+1,r);
    seg[node]=max(seg[node*2],seg[node*2+1]);
}
bool cmp(int x,int y){
    return a[x]>a[y];
}
void up(int node,int l,int r,int ind){
    if(l>ind||r<ind)return;
    if(l==r){
        seg[node]=a[l];
        return;
    }
    int mid=(l+r)/2;
    up(node*2,l,mid,ind);
    up(node*2+1,mid+1,r,ind);
    seg[node]=max(seg[node*2],seg[node*2+1]);
}
int q(int node,int l,int r,int s,int e){
    if(l>e||r<s)return 0;
    if(l>=s&&r<=e)return seg[node];
    int mid=(l+r)/2;
    return max(q(node*2,l,mid,s,e),q(node*2+1,mid+1,r,s,e));
}
int q1(int node,int l,int r,int ind,int mn){
    if(r<ind)return 0;
    if(l==r){
        if(a[l]>mn)return l;
        return 0;
    }
    int mid=(l+r)/2;
    if(mid<ind)return q1(node*2+1,mid+1,r,ind,mn);
    if(seg[node*2]<=mn)return q1(node*2+1,mid+1,r,ind,mn);
    else return q1(node*2,l,mid,ind,mn);
}
int q2(int node,int l,int r,int ind,int mn){
    if(l>ind)return 0;
    if(l==r){
        if(a[l]>mn)return l;
        return 0;
    }
    int mid=(l+r)/2;
    if(mid+1>ind)return q2(node*2,l,mid,ind,mn);
    if(seg[node*2+1]<=mn)return q2(node*2,l,mid,ind,mn);
    else return q2(node*2+1,mid+1,r,ind,mn);

}
int main(){
    scanf("%d%d",&n,&st);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        if(a[i]>n-10)v.push_back(i);
    }
    sort(v.begin(),v.end(),cmp);
    build(1,1,n);
    scanf("%d",&Q);
    while(Q--){
        scanf("%s",&oo);s=oo;
        if(s=="E"){
            scanf("%d%d",&x,&y);
            a[x]=a[v[y-1]]+1;
            up(1,1,n,x);
            for(int i=0;i<y-1;i++){
                a[v[i]]++;
                up(1,1,n,v[i]);
            }
            int ok=0;
            for(auto pp:v)if(pp==x)ok=1;
            if(!ok)v.pop_back();
            sort(v.begin(),v.end(),cmp);
        }
        else{
            scanf("%d",&x);
            if(x==st){
                puts("0");
                continue;
            }
            if(x<st){
                int mn=q(1,1,n,x,st-1);
                int ans=q1(1,1,n,st,mn);
                int res=ans-x-1;
        //        cout<<ans<<endl;
                if(ans==0)res=n-x;
                else if(ans<=st)res=st-x;
                cout<<res<<endl;
            }
            else{
                int mn=q(1,1,n,st+1,x);
                int ans=q2(1,1,n,st,mn);
                int res=x-ans-1;
      //          cout<<ans<<endl;
                if(ans==0)res=x-1;
                else if(ans>=st)res=x-st;
                cout<<res<<endl;
            }
        }
    }
}

Compilation message

cake.cpp: In function 'int main()':
cake.cpp:73:23: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'char (*)[250090]' [-Wformat=]
         scanf("%s",&oo);s=oo;
                       ^
cake.cpp:64:25: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&st);
                         ^
cake.cpp:66:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&a[i]);
                          ^
cake.cpp:71:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&Q);
                   ^
cake.cpp:73:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%s",&oo);s=oo;
                        ^
cake.cpp:75:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d%d",&x,&y);
                                ^
cake.cpp:88:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d",&x);
                           ^
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 416 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 5 ms 868 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 4 ms 1088 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 4 ms 1088 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Correct 246 ms 1088 KB Output is correct
5 Runtime error 6 ms 1508 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 6 ms 1636 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 6 ms 1744 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Correct 246 ms 1744 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 43 ms 3836 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 43 ms 3836 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 114 ms 3924 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Incorrect 1 ms 3924 KB Output isn't correct
5 Runtime error 71 ms 7356 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 68 ms 7496 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Incorrect 211 ms 7552 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Runtime error 3 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 3 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 10 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 9 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 2 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 12 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 3 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 34 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 49 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 3 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 7 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 40 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 46 ms 7552 KB Execution killed with signal 11 (could be triggered by violating memory limits)