제출 #101452

#제출 시각아이디문제언어결과실행 시간메모리
101452ShaneOng케이크 (CEOI14_cake)C++14
0 / 100
868 ms28152 KiB
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> ii; int n,st,q,arr[250009],flag; struct node{ int s,e,m,v=0; node *l,*r; node(int a,int b){ s=a,e=b,m=(s+e)/2; if(s!=e){ l=new node(s,m); r=new node(m+1,e); v=max(l->v,r->v); }else{ v=arr[s]; } } void up(int a,int b){ if(s==e&&s==a){ v=b; return; } if(a<=m) l->up(a,b); else r->up(a,b); v=max(l->v,r->v); } int qu(int a,int b){ if(s==a&&b==e){ return v; } if(b<=m) return l->qu(a,b); if(a>m) return r->qu(a,b); return max(l->qu(a,m),r->qu(m+1,e)); } int bs1(int a){ if(s==e) return s+(v<a); if(a>l->v) return r->bs1(a); return l->bs1(a); } int bs2(int a){ if(s==e) return s+(v<a); if(a>r->v) return l->bs1(a); return r->bs1(a); } }*root[2]; int main(){ scanf("%d%d",&n,&st); priority_queue<ii,vector<ii>,greater<ii> > pq[2]; for(int x=0;x<n;x++){ scanf("%d",&arr[x]); if(arr[x]>n-10) pq[flag].push(ii(arr[x],x)); } int ctr=n; if(st>1) root[0]=new node(0,st-2); if(st<n) root[1]=new node(st,n-1); scanf("%d",&q); for(int x=0,b,c;x<q;x++){ char a; scanf(" %c",&a); if(a=='E'){ scanf("%d%d",&b,&c); pq[flag].pop(); while(!pq[flag].empty()){ ii temp=pq[flag].top(); pq[flag].pop(); if(temp.first>ctr-c+1){ temp.first++; if(temp.second+1>st){ root[1]->up(temp.second,temp.first); } if(temp.second+1<st) root[0]->up(temp.second,temp.first); } pq[1-flag].push(temp); } if(b>st) root[1]->up(b-1,ctr-c+2); if(b<st) root[0]->up(b-1,ctr-c+2); pq[1-flag].push(ii(ctr-c+2,b-1)); flag=1-flag; ctr++; assert((int)pq[flag].size()==min(10,n)); }else{ scanf("%d",&b); if(b!=st){ if(b>st){ //printf("%d,%d\n",root[1]->qu(st,b-1),root[0]->bs2(root[1]->qu(st,b-1))); printf("%d\n",((b-1)-(root[0]->bs2(root[1]->qu(st,b-1)))-1)); } if(b<st){ //printf("%d,%d\n",root[0]->qu(b-1,st-2),root[1]->bs1(root[0]->qu(b-1,st-2))); printf("%d\n",(root[1]->bs1(root[0]->qu(b-1,st-2))-(b-1)-1)); } }else printf("0\n"); } } }

컴파일 시 표준 에러 (stderr) 메시지

cake.cpp: In function 'int main()':
cake.cpp:57:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&st);
     ~~~~~^~~~~~~~~~~~~~~
cake.cpp:60:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&arr[x]);
         ~~~~~^~~~~~~~~~~~~~
cake.cpp:70:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&q);
     ~~~~~^~~~~~~~~
cake.cpp:73:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf(" %c",&a);
         ~~~~~^~~~~~~~~~
cake.cpp:76:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d%d",&b,&c);
             ~~~~~^~~~~~~~~~~~~~
cake.cpp:100:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d",&b);
             ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...