Submission #1274790

#TimeUsernameProblemLanguageResultExecution timeMemory
1274790nicolo_010Mechanical Doll (IOI18_doll)C++20
16 / 100
47 ms11412 KiB
#include <bits/stdc++.h>
#include "doll.h"
using namespace std;
using ll = long long;
using pii = pair<int, int>;

void create_circuit(int M, std::vector<int> A) {
	A.push_back(0);
	int N = A.size();
	vector<int> C(M+1);
	vector<int> X, Y;
	vector<vector<int>> after(M+1);
	for (int i=0; i<N; i++) {
		after[A[i]].push_back(A[(i+1)%N]);
	}
	int S=0;
	for (int i=0; i<M+1; i++) {
		int sz = after[i].size();
		if (sz == 0) {
			;
		}
		else if (sz == 1) {
			C[i] = after[i][0];
		}
		else if (sz == 2) {
			C[i] = --S;
			X.push_back(after[i][0]);
			Y.push_back(after[i][1]);
		}
		else if (sz <= 4) {
			C[i] = --S;
			X.push_back(--S);
			Y.push_back(--S);
			if (sz == 3) {
				X.push_back(C[i]);
				Y.push_back(after[i][1]);
				X.push_back(after[i][0]);
				Y.push_back(after[i][2]);
			}
			else {
				X.push_back(after[i][0]);
				Y.push_back(after[i][2]);
				X.push_back(after[i][1]);
				Y.push_back(after[i][3]);
			}
		}
	}
	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...