Submission #923633

#TimeUsernameProblemLanguageResultExecution timeMemory
923633alexander707070Chameleon's Love (JOI20_chameleon)C++14
4 / 100
37 ms596 KiB
#include <bits/stdc++.h> #include "chameleon.h" #define MAXN 1007 using namespace std; namespace { int n,bad[MAXN]; vector<int> to[MAXN]; vector< pair<int,int> > sol; vector<int> l,r,w; void bin(){ for(int curr:l){ int lt=0,rt=n+1,mid,st=0; while(lt+1<rt){ mid=(lt+rt)/2; w.clear(); for(int f=st;f<mid;f++)w.push_back(r[f]); w.push_back(curr); if(Query(w)!=w.size()){ rt=mid; }else{ lt=mid; } } if(rt!=n+1)to[curr].push_back(r[rt-1]); lt=st=rt; rt=n+1; while(lt+1<rt){ mid=(lt+rt)/2; w.clear(); for(int f=st;f<mid;f++)w.push_back(r[f]); w.push_back(curr); if(Query(w)!=w.size()){ rt=mid; }else{ lt=mid; } } if(rt!=n+1)to[curr].push_back(r[rt-1]); lt=st=rt; rt=n+1; while(lt+1<rt){ mid=(lt+rt)/2; w.clear(); for(int f=st;f<mid;f++)w.push_back(r[f]); w.push_back(curr); if(Query(w)!=w.size()){ rt=mid; }else{ lt=mid; } } if(rt!=n+1)to[curr].push_back(r[rt-1]); } for(int curr:r){ int lt=0,rt=n+1,mid,st=0; while(lt+1<rt){ mid=(lt+rt)/2; w.clear(); for(int f=st;f<mid;f++)w.push_back(l[f]); w.push_back(curr); if(Query(w)!=w.size()){ rt=mid; }else{ lt=mid; } } if(rt!=n+1)to[curr].push_back(l[rt-1]); lt=st=rt; rt=n+1; while(lt+1<rt){ mid=(lt+rt)/2; w.clear(); for(int f=st;f<mid;f++)w.push_back(l[f]); w.push_back(curr); if(Query(w)!=w.size()){ rt=mid; }else{ lt=mid; } } if(rt!=n+1)to[curr].push_back(l[rt-1]); lt=st=rt; rt=n+1; while(lt+1<rt){ mid=(lt+rt)/2; w.clear(); for(int f=st;f<mid;f++)w.push_back(l[f]); w.push_back(curr); if(Query(w)!=w.size()){ rt=mid; }else{ lt=mid; } } if(rt!=n+1)to[curr].push_back(l[rt-1]); } } } // namespace void Solve(int N) { n=N; for(int i=1;i<=2*n;i++){ l.push_back(i); if(Query(l)!=l.size()){ l.pop_back(); r.push_back(i); } } bin(); for(int i=1;i<=2*n;i++){ if(to[i].size()==1)continue; else{ if(Query({i,to[i][0],to[i][1]})==1)bad[i]=to[i][2]; else if(Query({i,to[i][0],to[i][2]})==1)bad[i]=to[i][1]; else if(Query({i,to[i][2],to[i][1]})==1)bad[i]=to[i][0]; } } for(int i=1;i<=2*n;i++){ for(int f:to[i]){ if(bad[i]==f or bad[f]==i)continue; if(i<f)Answer(i,f); } } } /* 4 1 0 1 0 0 1 1 0 4 4 1 2 1 2 3 3 4 3 8 7 6 5 2 1 */

Compilation message (stderr)

chameleon.cpp: In function 'void {anonymous}::bin()':
chameleon.cpp:27:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |             if(Query(w)!=w.size()){
      |                ~~~~~~~~^~~~~~~~~~
chameleon.cpp:45:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |             if(Query(w)!=w.size()){
      |                ~~~~~~~~^~~~~~~~~~
chameleon.cpp:62:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |             if(Query(w)!=w.size()){
      |                ~~~~~~~~^~~~~~~~~~
chameleon.cpp:82:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |             if(Query(w)!=w.size()){
      |                ~~~~~~~~^~~~~~~~~~
chameleon.cpp:99:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   99 |             if(Query(w)!=w.size()){
      |                ~~~~~~~~^~~~~~~~~~
chameleon.cpp:116:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  116 |             if(Query(w)!=w.size()){
      |                ~~~~~~~~^~~~~~~~~~
chameleon.cpp: In function 'void Solve(int)':
chameleon.cpp:134:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  134 |         if(Query(l)!=l.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...