# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
568123 | 2022-05-24T16:48:38 Z | alvingogo | Chameleon's Love (JOI20_chameleon) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> #include "chameleon.h" #pragma GCC optimize("Ofast") #define fs first #define sc second #define cd complex<double> #define p_q priority_queue using namespace std; void Solve(int N){ int n=2*N; vector<vector<int> > v(n+1); vector<int> vis(n+1); vector<int> q(n); vector<pair<int,int> >ans; iota(q.begin(),q.end(),1); for(int i=1;i<=n;i++){ vector<int> tmp; if(vis[i]){ continue; } tmp.push_back(i); for(int j=i+1;j<=n;j++){ tmp.push_back(j); if(vis[j]){ continue; } if(Query(tmp)==1){ int z=0; vector<int> p; for(int k=1;k<=n;k++){ if(k==i || k==j){ continue; } p.push_back(k); } if(Query(p)==N-1){ for(int k=1;k<=n;k++){ vector<int> y; for(int l=1;l<=n;l++){ if(l==i || l==j || l==k){ continue; } y.push_back(l); } z=max(z,Query(y)); if(z==N){ break; } } if(z==N-1){ ans.push_back({i,j}); vis[i]=vis[j]=1; break; } } } } } assert(h.size()==N); for(auto h:ans){ Answer(h.fs,h.sc); } }