제출 #1165562

#제출 시각아이디문제언어결과실행 시간메모리
1165562abcdxyz123도서관 (JOI18_library)C++20
컴파일 에러
0 ms0 KiB
#include"library.h" #include<bits/stdc++.h> #define maxn 1005 #define pi pair<int,int> #define fi first #define se second using namespace std; int n; int a[maxn]; int nho[maxn]; //int Query(const std::vector<int>& M){} //void Answer(const std::vector<int>& res){} int FindA1() { vector<int>mask; for(int i=1;i<=n;i++) { mask.push_back(1); } for(int i=1;i<=n;i++) { mask[i-1]=0; if(Query(mask)==1)return i; mask[i-1]=1; } assert(false); } int Adj(int lim,int x) { vector<int>mask; for(int i=1;i<=lim;i++) { mask.push_back(1); } for(int i=lim+1;i<=n;i++) { mask.push_back(0); } int tmp=Query(mask); mask[x-1]=1; return Query(mask)-tmp; } int FindAdjSecond(int x,int lo,int hi) { while(hi-lo>1) { int mid=(lo+hi)/2; if(Adj(mid,x)==2) { hi=mid; } else { lo=mid; } } return hi; } int FindAdjFirst(int x,int lo,int hi) { if(ask(lo,x)==1)return lo; while(hi-lo>1) { int mid=(lo+hi)/2; if(ask(mid)==1) { hi=mid; } else { lo=mid; } } return hi; } void Solve(int N) { n=N; a[1]=FindA1(); a[2]=FindAdjFirst(a[1]); for(int i=3;i<n;i++) { int L=FindAdjSecond(a[i-1],1,n); int R=FindAdjSecond(a[i-1],1,L-1); if(a[i-2]==L)a[i]=R; else a[i]=L; } for(int i=1;i<n;i++) { nho[a[i]]=1; } for(int i=1;i<=n;i++) { if(nho[a[i]]==0) { a[n]=i; break; } } vector<int>ans; for(int i=1;i<=n;i++) { ans.push_back(a[i]); } Answer(ans); }

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

library.cpp: In function 'int FindAdjFirst(int, int, int)':
library.cpp:63:8: error: 'ask' was not declared in this scope
   63 |     if(ask(lo,x)==1)return lo;
      |        ^~~
library.cpp:67:12: error: 'ask' was not declared in this scope
   67 |         if(ask(mid)==1)
      |            ^~~
library.cpp: In function 'void Solve(int)':
library.cpp:82:22: error: too few arguments to function 'int FindAdjFirst(int, int, int)'
   82 |     a[2]=FindAdjFirst(a[1]);
      |          ~~~~~~~~~~~~^~~~~~
library.cpp:61:5: note: declared here
   61 | int FindAdjFirst(int x,int lo,int hi)
      |     ^~~~~~~~~~~~