Submission #43420

# Submission time Handle Problem Language Result Execution time Memory
43420 2018-03-15T23:16:53 Z Hassoony Cake (CEOI14_cake) C++14
0 / 100
1061 ms 5360 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-13)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);
            int idx=-1;
            for(int i=0;i<10;i++){
                if(v[i]==x)idx=i;
            }
            if(idx==y-1)continue;
            if(idx==-1){
                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]);
                }
                v.pop_back();
                v.push_back(x);
                sort(v.begin(),v.end(),cmp);
     //       for(int i=1;i<=n;i++)cout<<a[i]<<" ";
       //     cout<<endl;
                continue;
            }
            if(idx>y-1){
                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]);
                }
                sort(v.begin(),v.end(),cmp);
     //       for(int i=1;i<=n;i++)cout<<a[i]<<" ";
       //     cout<<endl;
                continue;
            }
            a[x]=a[v[y]];
            up(1,1,n,x);
            for(int i=idx+1;i<=y;i++){
                a[v[i]]++;
                up(1,1,n,v[i]);
            }
            sort(v.begin(),v.end(),cmp);
         //   for(int i=1;i<=n;i++)cout<<a[i]<<" ";
           // cout<<endl;
        }
        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;
            }
        }
    }
}
/*
12 1
1 2 3 4 5 6 7 8 9 10 11 12
20
E 1 1
*/

Compilation message

cake.cpp: In function 'int main()':
cake.cpp:72:23: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'char (*)[250090]' [-Wformat=]
         scanf("%s",&oo);s=oo;
                       ^
cake.cpp:63: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:65:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&a[i]);
                          ^
cake.cpp:70:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&Q);
                   ^
cake.cpp:72: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:74: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:117: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 248 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 412 ms 480 KB Output isn't correct
2 Incorrect 337 ms 552 KB Output isn't correct
3 Incorrect 343 ms 572 KB Output isn't correct
4 Correct 236 ms 572 KB Output is correct
5 Incorrect 449 ms 732 KB Output isn't correct
6 Incorrect 392 ms 732 KB Output isn't correct
7 Incorrect 369 ms 732 KB Output isn't correct
8 Correct 262 ms 792 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 233 ms 2452 KB Output isn't correct
2 Incorrect 216 ms 2452 KB Output isn't correct
3 Incorrect 217 ms 2452 KB Output isn't correct
4 Incorrect 1 ms 2452 KB Output isn't correct
5 Incorrect 262 ms 4348 KB Output isn't correct
6 Incorrect 267 ms 4348 KB Output isn't correct
7 Incorrect 218 ms 4348 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 82 ms 4348 KB Output isn't correct
2 Incorrect 71 ms 4348 KB Output isn't correct
3 Incorrect 122 ms 4348 KB Output isn't correct
4 Incorrect 139 ms 4348 KB Output isn't correct
5 Incorrect 223 ms 4348 KB Output isn't correct
6 Incorrect 256 ms 4348 KB Output isn't correct
7 Incorrect 289 ms 4348 KB Output isn't correct
8 Incorrect 192 ms 4348 KB Output isn't correct
9 Incorrect 1061 ms 5360 KB Output isn't correct
10 Incorrect 748 ms 5360 KB Output isn't correct
11 Incorrect 826 ms 5360 KB Output isn't correct
12 Incorrect 990 ms 5360 KB Output isn't correct
13 Incorrect 925 ms 5360 KB Output isn't correct