제출 #594864

#제출 시각아이디문제언어결과실행 시간메모리
594864TimDee자동 인형 (IOI18_doll)C++14
20 / 100
54 ms5460 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> cnt(m+1,0); int mx=0; for (int i=0; i<n; ++i) { cnt[a[i]]++; mx=max(mx,cnt[a[i]]); } if (mx==1) { vector<int> c(m+1,0); c[0]=a[0]; for (int i=1; i<n; ++i) { c[a[i-1]]=a[i]; } vector<int> x(0), y(0); answer(c,x,y); } else if (mx==2) { } else if (mx<=4) { } else if (m==1) { int size=1; while (4*size<n) size<<=1; vector<int> x(2*size+1), y(2*size+1), state(2*size+1,0), c = {1, -(2*size)}; for (int i=1; i<=size-1; ++i) { x[i-1] = -(2*i); y[i-1] = -(2*i+1); } x[2*size-1]=-(2*size+1); y[2*size-1]=-1; x[2*size] = y[2*size] = 1; int cnt=0, p=0; while (cnt<2*size) { //cout<<p<<"->"; if (p>=size-1) { //cout<<"added "<<p<<' '<<cnt<<'\n'; if (state[p]) { if (cnt<n-1-2*size) y[p]=1; else y[p]=-(2*size); } else { if (cnt<n-1-2*size) x[p]=1; else x[p]=-(2*size); } state[p]^=1; ++cnt; p=0; continue; } if (!state[p]) { state[p]^=1; p<<=1; ++p; } else { state[p]^=1; ++p; p<<=1; } } y[2*size-2]=0; answer(c,x,y); } else { } }
#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...