Submission #428115

#TimeUsernameProblemLanguageResultExecution timeMemory
428115errorgornChameleon's Love (JOI20_chameleon)C++17
100 / 100
65 ms476 KiB
#include "chameleon.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define ii pair<ll,ll> #define fi first #define se second #define endl '\n' #define puf push_front #define pof pop_front #define pub push_back #define pob pop_back #define rep(x,s,e) for (auto x=s-(s>e);x!=e-(s>e);s<e?x++:x--) #define all(x) (x).begin(),(x).end() #define sz(x) (int) (x).size() mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int n; vector<int> ind_set[4]; vector<int> same[1005]; int nxt[1005]; set<int> test(int i,int pos){ set<int> res; while (true){ vector<int> v; for (auto &it:ind_set[i]) if (!res.count(it)) v.pub(it); if (v.empty()) break; v.pub(pos); if (Query(v)==sz(v)) break; v.pob(); while (sz(v)!=1){ vector<int> l,r; rep(x,0,sz(v)/2) l.pub(v[x]); rep(x,sz(v)/2,sz(v)) r.pub(v[x]); l.pub(pos); int val=Query(l); l.pob(); if (val==sz(l)+1) v=r; else v=l; } res.insert(v[0]); } return res; } void Solve(int N) { n=N; vector<int> proc; rep(x,1,2*n+1) proc.pub(x); rep(x,0,sz(proc)) swap(proc[x],proc[rng()%(x+1)]); for (auto &x:proc){ bool ins=false; rep(y,0,4){ auto temp=test(y,x); for (auto &it:temp){ //cout<<x<<" "<<it<<endl; same[it].pub(x); same[x].pub(it); } if (temp.empty() && !ins){ ind_set[y].pub(x); ins=true; } } } memset(nxt,-1,sizeof(nxt)); rep(x,1,2*n+1) if (sz(same[x])==3){ if (Query({x,same[x][0],same[x][1]})==1){ nxt[x]=same[x][2]; } else if (Query({x,same[x][0],same[x][2]})==1){ nxt[x]=same[x][1]; } else { nxt[x]=same[x][0]; } } rep(x,1,2*n+1){ if (sz(same[x])==1){ //cout<<x<<" "<<same[x][0]<<endl; if (x<same[x][0]) Answer(x,same[x][0]); } else{ for (auto &it:same[x]) if (nxt[it]!=x && nxt[x]!=it){ //cout<<x<<" "<<it<<endl; if (x<it) Answer(x,it); } } } }
#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...