Submission #212435

#TimeUsernameProblemLanguageResultExecution timeMemory
212435AbdullahChameleon's Love (JOI20_chameleon)C++17
100 / 100
47 ms504 KiB
#include "chameleon.h" #include <bits/stdc++.h> using namespace std; vector<vector<int>>S(4), B(1005), adjs(1005); vector<bool>vis(1005, 0); int y; void ans(int a, int b){ if(vis[a]||vis[b])return; Answer(a, b); vis[a]=1, vis[b]=1; return; } vector<int>v; bool BS(int x){ if(Query(v)==v.size())return 0; int l=0, r=v.size()-2, ans=-1; while(r>=l){ int m=(l+r)/2; vector<int>v1={x}; for(int i=l; i<=m; i++){ v1.push_back(v[i]); } if(Query(v1)!=v1.size()){ ans=m; r=m-1; }else{ l=m+1; } } adjs[v[ans]].push_back(x); adjs[x].push_back(v[ans]); v.erase(v.begin()+ans); BS(x); return 1; } void Solve(int n) { n*=2; y=n; for(int i=1; i<=n; i++){ vector<bool>X(4, 0); for(int j=0; j<4; j++){ if(adjs[i].size()==3)break; if(S[j].size()==0)continue; v=S[j]; v.push_back(i); if(BS(i)){ X[j]=1; } } for(int j=0; j<4; j++){ if(!X[j]){ S[j].push_back(i); break; } } } for(int i=1; i<=n; i++){ if(adjs[i].size()==1){ ans(i, adjs[i][0]); }else{ for(int j=0; j<3; j++){ if(j==2){ B[i].push_back(adjs[i][j]); B[adjs[i][j]].push_back(i); break; } vector<int>A={i}; for(int a=0;a<=2; a++){ if(a!=j)A.push_back(adjs[i][a]); } if(Query(A)==1){ B[i].push_back(adjs[i][j]); B[adjs[i][j]].push_back(i); break; } } } } for(int i=1; i<=n; i++){ if(vis[i])continue; for(int a:adjs[i]){ if(a!=B[i][0]&&a!=B[i][1]){ ans(i, a); } } } }

Compilation message (stderr)

chameleon.cpp: In function 'bool BS(int)':
chameleon.cpp:15:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if(Query(v)==v.size())return 0;
     ~~~~~~~~^~~~~~~~~~
chameleon.cpp:23:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(Query(v1)!=v1.size()){
      ~~~~~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...