Submission #1210641

#TimeUsernameProblemLanguageResultExecution timeMemory
1210641AvianshMechanical Doll (IOI18_doll)C++20
66.61 / 100
88 ms13424 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; int n; int cn; vector<int>x; vector<int>y; vector<int>normalize(vector<int>arr){ vector<int>temp; vector<int>buff; for(int i : arr){ if(i!=-1){ temp.push_back(i); } else{ buff.push_back(i); } } if(temp.size()==0){ //all -1s return {-1}; } vector<int>ans; int i = 0; int j = 0; for(int z = 0;z<arr.size();z++){ if(j<buff.size()){ ans.push_back(buff[j]); j++; } if(i<temp.size()){ ans.push_back(temp[i]); i++; } } return ans; } int create(vector<int>req){ set<int>s; for(int i : req){ s.insert(i); if(s.size()>=2){ break; } } if(s.size()==1){ return {req[0]}; } if(req.size()==1){ return req[0]; } cn--; int curr = cn; vector<int>reqx,reqy; for(int i = 0;i<req.size();i++){ if(i%2){ reqy.push_back(req[i]); } else{ reqx.push_back(req[i]); } } if(reqx.size()!=reqy.size()){ reqy.push_back(reqx[reqx.size()-1]); reqx[reqx.size()-1]=curr; } x.push_back(-1e9); y.push_back(-1e9); int retx = create(reqx); x[-curr-1]=retx; int rety = create(reqy); y[-curr-1]=rety; return curr; } void create_circuit(int m, vector<int> a) { vector<int>c(m+1); n=a.size(); while(__builtin_popcount((int)a.size()+1)!=1){ a.push_back(-1); } a.push_back(0); a=normalize(a); cn=0; x.clear(); y.clear(); int node = create(a); for(int i = 0;i<=m;i++){ c[i]=node; } answer(c,x,y); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...