제출 #1347998

#제출 시각아이디문제언어결과실행 시간메모리
1347998NAMIN자동 인형 (IOI18_doll)C++20
16 / 100
37 ms11264 KiB
#include <bits/stdc++.h>
#include "doll.h"

using namespace std;

void make_switch(vector<int> out,int& S,vector<int>& X,vector<int>& Y){
	if(out.size()==2){
		X.push_back(out[0]);
		Y.push_back(out[1]);
	}
	else if(out.size()==3){
		X.push_back(--S);
		Y.push_back(--S);

		X.push_back(S+2);
		Y.push_back(out[1]);

		X.push_back(out[0]);
		Y.push_back(out[2]);
	}
	else{
		X.push_back(--S);
		Y.push_back(--S);

		X.push_back(out[0]);
		Y.push_back(out[2]);

		X.push_back(out[1]);
		Y.push_back(out[3]);
	}
}

void create_circuit(int M, vector<int> a) {
	a.push_back(0);
	a.insert(a.begin(),0);
	int N = a.size();

	vector<int> nxt(M+1,0);
	vector<vector<int>> after(M+1);
	for(int i=0;i<N-1;i++){
		after[a[i]].push_back(a[i+1]);
	}
	int S=0;
	vector<int> X, Y;
	for(int i=0;i<=M;i++){
		if(after[i].size()>1){
			nxt[i]=--S;
			make_switch(after[i],S,X,Y);
		}
		else if(after[i].size()==1)
			nxt[i]=after[i].back();
	}
	answer(nxt, 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...