Submission #43419

# Submission time Handle Problem Language Result Execution time Memory
43419 2018-03-15T22:57:41 Z Hassoony Cake (CEOI14_cake) C++14
0 / 100
996 ms 5428 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);
            int idx=-1;
            for(int i=0;i<10;i++){
                if(v[i]==x)idx=i;
            }
            if(idx==y)continue;
        //    cout<<idx<<" "<<v[y-1]<<endl;
            if(idx<y&&idx!=-1){
                a[x]=a[v[y-1]];
                up(1,1,n,x);
                for(int i=idx;i<y;i++){
                    if(v[i]==x)continue;
                    a[v[i]]++;
                    up(1,1,n,v[i]);
                }
            }
            else {
                a[x]=a[v[y-1]]+1;
                up(1,1,n,x);
                for(int i=0;i<y-1;i++){
                    if(v[i]==x)continue;
                    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(),v.push_back(x);
            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;
            }
        }
    }
}

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:107: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 347 ms 608 KB Output isn't correct
2 Incorrect 225 ms 608 KB Output isn't correct
3 Incorrect 259 ms 700 KB Output isn't correct
4 Incorrect 181 ms 700 KB Output isn't correct
5 Incorrect 387 ms 812 KB Output isn't correct
6 Incorrect 319 ms 812 KB Output isn't correct
7 Incorrect 271 ms 812 KB Output isn't correct
8 Incorrect 189 ms 940 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 231 ms 2524 KB Output isn't correct
2 Incorrect 210 ms 2524 KB Output isn't correct
3 Incorrect 209 ms 2524 KB Output isn't correct
4 Incorrect 1 ms 2524 KB Output isn't correct
5 Incorrect 258 ms 4248 KB Output isn't correct
6 Incorrect 252 ms 4332 KB Output isn't correct
7 Incorrect 219 ms 4332 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 75 ms 4332 KB Output isn't correct
2 Incorrect 70 ms 4332 KB Output isn't correct
3 Incorrect 121 ms 4332 KB Output isn't correct
4 Incorrect 133 ms 4332 KB Output isn't correct
5 Incorrect 244 ms 4332 KB Output isn't correct
6 Incorrect 236 ms 4332 KB Output isn't correct
7 Incorrect 266 ms 4332 KB Output isn't correct
8 Incorrect 151 ms 4332 KB Output isn't correct
9 Incorrect 996 ms 5428 KB Output isn't correct
10 Incorrect 754 ms 5428 KB Output isn't correct
11 Incorrect 807 ms 5428 KB Output isn't correct
12 Incorrect 994 ms 5428 KB Output isn't correct
13 Incorrect 859 ms 5428 KB Output isn't correct