Submission #287278

#TimeUsernameProblemLanguageResultExecution timeMemory
287278amoo_safarScales (IOI15_scales)C++17
71.43 / 100
2 ms384 KiB
#include "scales.h"

#include <bits/stdc++.h>

using namespace std;

void init(int T) {
	assert(T != -1);
	return ;
}

void orderCoins(){
	int W[] = {1, 2, 3, 4, 5, 6};
	int S4[] = {0, 0, 0, 0}, p = 0;
	int res, A, B, C, D, E, F;

	res = getHeaviest(1, 2, 3);
	if(res == 1) A = 1, B = 2, C = 3;
	if(res == 2) A = 2, B = 1, C = 3;
	if(res == 3) A = 3, B = 1, C = 2;

	res = getLightest(4, 5, 6);
	if(res == 4) D = 4, E = 5, F = 6;
	if(res == 5) D = 5, E = 4, F = 6;
	if(res == 6) D = 6, E = 4, F = 5;

	res = getHeaviest(A, E, F);
	W[5] = res;
	if(res != A) S4[p ++] = A;
	if(res != E) S4[p ++] = E;
	if(res != F) S4[p ++] = F;

	res = getLightest(B, C, D);
	W[0] = res;
	if(res != B) S4[p ++] = B;
	if(res != C) S4[p ++] = C;
	if(res != D) S4[p ++] = D;
	
	assert(p == 4);

	res = getHeaviest(S4[1], S4[2], S4[3]);
	for(int i = 0; i + 1 < 4; i++) if(S4[i] == res) swap(S4[i], S4[i + 1]);

	res = getLightest(S4[0], S4[1], S4[2]);
	for(int i = 3; i > 0; i--) if(S4[i] == res) swap(S4[i], S4[i - 1]);

	res = getMedian(S4[1], S4[2], S4[3]);
	if(res == S4[3]){
		swap(S4[1], S4[2]);
		swap(S4[2], S4[3]);
	} else if(res == S4[1]){
		swap(S4[1], S4[2]);
	}

	for(int i = 0; i < 4; i++) W[i + 1] = S4[i];
	answer(W);
	return ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...