제출 #140066

#제출 시각아이디문제언어결과실행 시간메모리
140066mahmoudbadawy도서관 (JOI18_library)C++17
0 / 100
3078 ms209928 KiB
#include <cstdio> #include <iostream> #include <vector> #include "library.h" using namespace std; // Query() // Answer() int n; int query(vector<int> v) { vector<int> m(n,0); for(int i:v) m[i]=1; return Query(m); } int get(int x,vector<int> v) { if(v.size()==1) { v.push_back(x); if(query(v)==2) return -1; return v[0]; } vector<int> mm; for(int i=0;i<v.size()/2;i++) mm.push_back(v[i]); int cur=query(mm); mm.push_back(x); if(query(mm)<=cur) { mm.pop_back(); return get(x,mm); } mm.clear(); for(int i=v.size()/2;i<v.size();i++) mm.push_back(v[i]); return get(x,mm); } vector<int> adj[1005]; vector<int> ans; int vis[1005]; void build(int x,int pa) { vis[x]=1; ans.push_back(x+1); for(int i:adj[x]) if(!vis[x]) build(i,x); } void Solve(int N) { n=N; vector<int> hv1; for(int i=0;i<N;i++) { vector<int> m(N,1); m[i]=0; if(Query(m)==1) hv1.push_back(i); } for(int i=0;i<N;i++) { while(true){ if(adj[i].size()==2 || (adj[i].size()==1 && (hv1[0]==i||hv1[1]==i))) break; vector<int> ss; for(int j=0;j<N;j++) { bool ok=1; for(int k:adj[i]) ok&=(k!=j); ok&=(i!=j); if(ok) ss.push_back(j); } int x=get(i,ss); if(x!=-1) {adj[i].push_back(x); adj[x].push_back(i);} } //cout << i+1 << " Found " << x+1 << endl; } /*for(int i=0;i<n;i++) { cout << i+1 << ": "; for(int j:adj[i]) cout << j+1 << " "; cout << endl; }*/ for(int i=0;i<n;i++) { if(adj[i].size()==1) { build(i,-1); break; } } Answer(ans); }

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

library.cpp: In function 'int get(int, std::vector<int>)':
library.cpp:28:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<v.size()/2;i++)
              ~^~~~~~~~~~~
library.cpp:38:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=v.size()/2;i<v.size();i++)
                       ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...