Submission #1281285

#TimeUsernameProblemLanguageResultExecution timeMemory
1281285WH8Mechanical Doll (IOI18_doll)C++20
37 / 100
83 ms14744 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; void create_circuit(int M, vector<int> A) { int n = A.size(); vector<int> C(M + 1); C[0] = -1; for (int i = 1; i <= M; ++i) { C[i] = -1; } int tar=1; while(tar < (int)A.size()+1){ tar*=2; } while((int)A.size()<tar-1){ A.push_back(-1); } A.push_back(0); int nw=1; vector<int> X(2*n, 1e9), Y(2*n, 1e9); auto dfs=[&](auto && dfs, int s, int e, vector<int> v)->int { vector<int> l, r; int m=(s+e)/2; assert((int)v.size()==e-s+1); if(s==e){ return A[v[0]]; } for(int i=0;i<(int)v.size();i++){ if(i%2==0)l.push_back(v[i]); else r.push_back(v[i]); } int cn=nw; nw++; X[cn]=dfs(dfs, s, m, l); Y[cn]=dfs(dfs, m+1, e, r); return -cn; }; vector<int> temp(A.size()); iota(temp.begin(),temp.end(),0); dfs(dfs, 0, (int)temp.size()-1, temp); vector<int> ansx, ansy; for(int i=1;i<nw;i++){ ansx.push_back(X[i]); ansy.push_back(Y[i]); } answer(C, ansx, ansy); } /* 4 4 1 2 1 3 */
#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...