Submission #1017444

#TimeUsernameProblemLanguageResultExecution timeMemory
1017444DorostWefScales (IOI15_scales)C++17
55.56 / 100
1 ms604 KiB
#include "scales.h"
#include <bits/stdc++.h>

using namespace std;

#define gl getLightest
#define gm getMedian
#define gh getHeaviest
#define gn getNextLightest


void init(int T) {
	/* ... */
}

void answe (vector <int> v) {
	int a[6];
	for (int i = 0; i < 6; i++)
		a[i] = v[i];
	answer (a);
}

void orderCoins() {
	/* ... */
	mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
	int aa[6] = {1, 2, 3, 4, 5, 6};
	shuffle(aa, aa + 6, rng);
	int x, y, z, a, b, c;
	x = gl(aa[0], aa[1], aa[2]);
	y = gm(aa[0], aa[1], aa[2]);
	z = aa[0] ^ aa[1] ^ aa[2] ^ x ^ y;
	a = gl(aa[3], aa[4], aa[5]);
	b = gm(aa[3], aa[4], aa[5]);
	c = aa[3] ^ aa[4] ^ aa[5] ^ a ^ b;
	int w = gn (x, y, z, a);
	if (w != x) {
		vector <int> v = {x, y, z};
		for (int i = 0; i < (int)v.size(); i++) {
			if (w == v[i]) {
				v.insert (v.begin() + i, a);
				break;
			}
		}
		w = gn(x, y, z, b);
		if (w != x) {
			for (int i = 0; i < (int)v.size(); i++) {
				if (w == v[i]) {
					v.insert (v.begin() + i, b);
					break;
				}
			}
		} else {
			v.push_back(b);
		}
		w = gn(x, y, z, c);
		if (w != x) {
			for (int i = 0; i < (int)v.size(); i++) {
				if (w == v[i]) {
					v.insert (v.begin() + i, c);
					break;
				}
			}
		} else {
			v.push_back(c);
		}
		answe (v);
		return;
	} else {
		int k = gm (a, b, x);
		if (k == a) {
			answe ({x, y, z, a, b, c});
			return;
		} else if (k == b) {
			int l = gn (b, x, y, c);
			if (l == y) {
				answe ({a, b, x, c, y, z});
				return;
			} else if (l == x) {
				answe ({a, b, c, x, y, z});
				return;
			} else {
				if (gm (a, c, z) == c) {
					answe ({a, b, x, y, c, z});
					return;
				} else {
					answe ({a, b, x, y, z, c});
					return;
				}
			}
		} else {
			w = gn (x, y, z, b);
			vector <int> v = {a, x, y, z};
			if (w == x) {
				v.push_back(b);
			} else {
				for (int i = 0; i < (int)v.size(); i++) {
					if (w == v[i]) {
						v.insert (v.begin() + i, b);
						break;
					}
				}
			}
			w = gn (x, y, z, c);
			if (w == x) {
				v.push_back(c);
			} else {
				for (int i = 0; i < (int)v.size(); i++) {
					if (w == v[i]) {
						v.insert (v.begin() + i, c);
						break;
					}
				}
			}
			answe (v);
			return;
		}
	}
	assert (false);
}

Compilation message (stderr)

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