제출 #356635

#제출 시각아이디문제언어결과실행 시간메모리
356635BlancaHM저울 (IOI15_scales)C++14
컴파일 에러
0 ms0 KiB
#include "scales.h"
#include <algorithm>
#include <vector>
using namespace std;

void permutaciones(vector<int> & permutacion, vector<bool> & seleccionado, int N, vector<vector<int>> & perm) {
	if ((int) permutacion.size() == N) {
		// ya están todos los números en la permutación
		perm.push_back(permutacion);
		return;
	}

	for (int i = 1; i <= N; i++) {
		if (!seleccionado[i-1]) {
			seleccionado[i-1] = true;
			permutacion.push_back(i);
			permutaciones(permutacion, seleccionado, N, perm);
			permutacion.pop_back();
			seleccionado[i-1] = false;
		}
	}
}

void reducir(vector<int> secuencia, vector<vector<int>> & perm) {
	vector<vector<int>> solucion = {};
	int i, j;
	for (int k = 0; k < (int) perm.size(); k++) {
		i = j = 0;
		while(i < (int) secuencia.size() && j < 6) {
			if (perm[k][j] == secuencia[i]) {
				i++;
				j++;
			} else j++;
		}
		if (i == (int) secuencia.size())
			solucion.push_back(perm[k]);
	}
	perm = solucion;
}

void orderCoins() {
	vector<vector<int>> perm; // guardamos aquí las permutaciones de los números 1 a 6
	vector<int> p = {};
	vector<bool> sel = vector<bool>(6, false);
	permutaciones(p, sel, 6, perm);
	int respuesta, A, B, C;
	while((int) perm.size() > 1) {
		A = perm[0][0];
		B = perm[0][1];
		C = perm[0][2];
		respuesta = getHeaviest(A, B, C);
		if (respuesta == A) {
			reducir({B, A}, perm);
			reducir({C, A}, perm);
		} else if (respuesta == B) {
			reducir({A, B}, perm);
			reducir({C, B}, perm);
		} else {
			reducir({A, C}, perm);
			reducir({B, C}, perm);
		}
	}
	p = perm[0];
	int solucion[6] = {p[0], p[1], p[2], p[3], p[4], p[5]};
	answer(solucion);
	return;
}

컴파일 시 표준 에러 (stderr) 메시지

/tmp/cc6w1uB7.o: In function `main':
grader.c:(.text.startup+0x79): undefined reference to `init'
collect2: error: ld returned 1 exit status