Submission #356711

#TimeUsernameProblemLanguageResultExecution timeMemory
356711BlancaHMScales (IOI15_scales)C++14
0 / 100
1098 ms512 KiB
#include "scales.h"
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

void init (int T) {
	//
}

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;
		}
	}
}

bool valida(vector<int> & secuencia, vector<int> & permutacion) {
	int i = 0, j = 0;
	while (i < (int) secuencia.size() && j < 6) {
		if (permutacion[j] == secuencia[i])
			i++;
		j++;
	}
	return i == (int) secuencia.size();
}

void reducir(vector<int> secuencia, vector<vector<int>> & perm) {
	vector<vector<int>> solucion = {};
	for (int k = 0; k < (int) perm.size(); k++) {
		if (valida(secuencia, perm[k]))
			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;
}

Compilation message (stderr)

scales.cpp: In function 'void init(int)':
scales.cpp:7:16: warning: unused parameter 'T' [-Wunused-parameter]
    7 | void init (int T) {
      |            ~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...