제출 #1272725

#제출 시각아이디문제언어결과실행 시간메모리
1272725coderpemulaXylophone (JOI18_xylophone)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define pii pair<int,int> #define pb push_back using namespace std; bool vis[10001]; void solve(int n) { int i,j,t; int ans[n+1]; vis[1] = vis[0] = true; for(i=n+1;i<=2*n;i++) vis[i] = true; int now = 1,id = 2,x; while(true){ if(id == n-1){ now = id; break; } cout<<"query("<<id<<","<<n<<")"<<endl; cin>>x; if(x == n-1) now = id,id++; else break; } ans[now] = 1; int one = now; // traverse right if(now == n-1) ans[n] = n; else{ id = now+1; cout<<"query("<<now<<","<<id<<")"<<endl; cin>>x; ans[id] = x+1; while(true){ if(id == n) break; cout<<"query("<<id<<","<<id+1<<")"<<endl; cin>>x; // might be ans[id]+x or ans[id]-x // so we check bos if(ans[id]-x <= 1){ ans[id+1] = ans[id]+x; vis[ans[id+1]] = true; id++; continue; } if(vis[ans[id]-x]){ ans[id+1] = ans[id]+x; vis[ans[id+1]] = true; id++; continue; } if(vis[ans[id]+x]){ ans[id+1] = ans[id]-x; vis[ans[id+1]] = true; id++; continue; } if(ans[id]+x == n){ ans[id+1] = n; vis[ans[id+1]] = true; id++; continue; } // kita gatau ini + atau - jadi kita cek int bil = x; cout<<"query("<<id-1<<","<<id+1<<")"<<endl; cin>>x; if(ans[id-1] < ans[id]){ // min max if(x == ans[id] - ans[id-1]){ // berarti middle ans[id+1] = ans[id]-bil; vis[ans[id+1]] = true; id++; continue; } if(x == bil){ ans[id+1] = ans[id]-bil; vis[ans[id+1]] = true; id++; continue; } ans[id+1] = ans[id]+bil; vis[ans[id+1]] = true; id++; } else{ if(x == ans[id-1] - ans[id]){ ans[id+1] = ans[id]+bil; vis[ans[id+1]] = true; id++; continue; } if(x == bil){ ans[id+1] = ans[id]+bil; vis[ans[id+1]] = true; id++; continue; } ans[id+1] = ans[id]-bil; vis[ans[id+1]] = true; id++; } } } if(now > 1){ id = now-1; cout<<"query("<<id<<","<<now<<")"<<endl; cin>>x; ans[id] = x+1; while(true){ if(id == 1) break; cout<<"query("<<id-1<<","<<id<<")"<<endl; cin>>x; if(ans[id]-x <= 1){ ans[id-1] = ans[id]+x; vis[ans[id-1]] = true; id--; continue; } if(vis[ans[id]-x]){ ans[id-1] = ans[id]+x; vis[ans[id-1]] = true; id--; continue; } if(vis[ans[id]+x]){ ans[id-1] = ans[id]-x; vis[ans[id-1]] = true; id--; continue; } // kita gatau int bil = x; cout<<"query("<<id-1<<","<<id+1<<")"<<endl; cin>>x; if(ans[id+1] > ans[id]){ // min max if(x == ans[id+1]-ans[id]){ ans[id-1] = ans[id]+bil; vis[ans[id-1]] = true; id--; continue; } if(x > bil){ ans[id-1] = ans[id]-bil; vis[ans[id-1]] = true; id--; continue; } ans[id-1] = ans[id]+bil; vis[ans[id-1]] = true; id--; } else{ // max min if(x == ans[id]-ans[id+1]){ ans[id-1] = ans[id]-bil; vis[ans[id-1]] = true; id--; continue; } if(bil == x){ ans[id-1] = ans[id]-bil; vis[ans[id-1]] = true; id--; continue; } ans[id-1] = ans[id]+bil; vis[ans[id-1]] = true; id--; } } } for(i=1;i<=n;i++) cout<<"answer("<<i<<","<<ans[i]<<")"<<endl; }

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

/usr/bin/ld: /tmp/ccuJdl9P.o: in function `main':
grader.cpp:(.text.startup+0x30): undefined reference to `solve(int)'
collect2: error: ld returned 1 exit status