제출 #677412

#제출 시각아이디문제언어결과실행 시간메모리
677412vjudge1케이크 (CEOI14_cake)C++17
0 / 100
1560 ms17456 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define int long long #define endl '\n' using namespace std; using namespace __gnu_pbds; using ordered_set = tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update>; int seg[2000000]; int L,R,N; int slv(int l=1,int r=N,int in=1){ if(l>R||r<L)return 0; if(l>=L&&r<=R)return seg[in]; int m=(l+r)/2; return max(slv(l,m,in*2),slv(m+1,r,in*2+1)); } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int mx=1000000000,n,a,q,x,y; cin>>n>>a; N=exp2(ceil(log2(n))); int arr[n]; for(auto &i:arr)cin>>i; for(int i=0;i<n;i++)seg[i+N]=arr[i]; for(int i=N-1;i;i--)seg[i]=max(seg[i*2],seg[i*2+1]); priority_queue<pair<int,int>>pq; for(int i=0;i<n;i++)pq.push({arr[i],i}); cin>>q; while(q--){ char c; cin>>c; if(c=='E'){ cin>>x>>y; deque<int>dq={x-1}; map<int,bool>mp; mp[x-1]=1; while(--y){ if(mp[pq.top().second]){ pq.pop(); y++; continue; } mp[pq.top().second]=1; dq.push_back(pq.top().second); pq.pop(); } for(int i=0;i<dq.size();i++){ arr[dq[i]]=mx; int in=dq[i]+N; seg[in]=mx; in/=2; while(in){ seg[in]=max(seg[in*2],seg[in*2+1]); in/=2; } pq.push({mx++,dq[i]}); } }else{ cin>>x; if(x==a){cout<<0<<endl;continue;} if(a==1||a==n){cout<<abs(a-x)<<endl;continue;} if(a<x){ L=a+1,R=x; int k=slv(); R=a-1; int l=1,r=a-1,f=a; while(l<=r){ L=(l+r)/2; if(slv()>k)l=L+1; else{ f=L; r=L-1; } } cout<<x-f<<endl; }else{ L=x,R=a-1; int k=slv(); L=a+1; int l=a+1,r=n,f=a; while(l<=r){ R=(l+r)/2; if(slv()>k)r=R-1; else{ f=R; l=R+1; } } cout<<f-x<<endl; } } } }

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

cake.cpp: In function 'int main()':
cake.cpp:47:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::deque<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |             for(int i=0;i<dq.size();i++){
      |                         ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...