제출 #1163744

#제출 시각아이디문제언어결과실행 시간메모리
1163744cnn008커다란 상품 (IOI17_prize)C++20
컴파일 에러
0 ms0 KiB
#include "prize.h" #include "bits/stdc++.h" using namespace std; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); int rand(int l, int r){ assert(l<=r); return uniform_int_distribution<int> (l,r)(rng); } pair <int,int> mp[200005]; pair <int,int> get(int i){ if(mp[i].first || mp[i].second) return mp[i]; auto vi=ask(i); pair <int,int> ans={vi[0],vi[1]}; return mp[i]=ans; } int find_best(int n) { int mx=0; for(int i=1; i<=20; i++){ int k=rand(0,n-1); auto [u,v]=get(k); if(!u and !v) return L; mx=max(mx,u+v); } int L=0,R=n-1,kep=0; for(int _=0; _<=10000; _++){ //cerr<<_<<" "<<kep<<endl; while(1){ auto [u,v]=get(L); if(!u and !v) return L; if(u+v==mx){ kep=u; break; }else L++; } int l=L,r=R; //cerr<<"range : "<<L<<" "<<R<<endl; while(l<=r){ int mid=(l+r)>>1; auto [u,v]=get(mid); if(!u and !v) return mid; //cerr<<"db : "<<l<<" "<<r<<endl; //cerr<<mid<<" "<<u<<" "<<v<<endl; if(!u){ L=max(L,mid+1); if(u+v==mx) l=mid+1; else break; }else{ if(u+v==1){ l=mid+1; L=max(L,mid+1); }else if(u+v!=mx){ r=mid-1; L=max(L,mid+1); }else{ if(u<=kep) l=mid+1; else r=mid-1; } } } } return 0; }

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

prize.cpp: In function 'int find_best(int)':
prize.cpp:22:38: error: 'L' was not declared in this scope
   22 |                 if(!u and !v) return L;
      |                                      ^