Submission #1301815

#TimeUsernameProblemLanguageResultExecution timeMemory
1301815nicolo_010Scales (IOI15_scales)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
#include "scales.h"
using namespace std;
using ll = long long;
using pii = pair<int, int>;

void init(int t) {
	return;
}

void orderCoins() {
	vector<int> p(6);
	set<int> full;
	set<int> l, r;
	for (int i=1; i<=6; i++) {
		full.insert(i);
		if (i <= 3) {
			l.insert(i);
		}
		else {
			r.insert(i);
		}
	}
	int lmn = getLightest(1, 2, 3);
	int rmn = getLightest(4, 5, 6);
	l.erase(lmn);
	r.erase(rmn);
	int mn = getLightest(lmn, rmn, *l.begin());
	full.erase(mn);
	p[0] = mn;
	if (mn == lmn) {
		int a=-1, b=-1;
		for (auto x : l) {
			if (a==-1) {
				a=x;
			}
			else {
				b=x;
			}
		}
		mn = getLightest(rmn, a, b);
		p[1] = mn;
		full.erase(mn);
		int md = getMedian(4, 5, 6);
		if (mn == a) {
			mn = getLightest(rmn, b, md);
			p[2] = mn;
			full.erase(mn);
		}
		else if (mn == rmn) {
			mn = getLightest(a, b, md);
			p[2] = mn;
			full.erase(mn);
		}
		else {
			mn = getLightest(rmn, a, md);
			p[2] = mn;
			full.erase(mn);
		}
	}
	if (mn == rmn) {
		int a=-1, b=-1;
		for (auto x : r) {
			if (a==-1) {
				a=x;
			}
			else {
				b=x;
			}
		}
		mn = getLightest(lmn, a, b);
		p[1] = mn;
		full.erase(mn);
		int md = getMedian(1, 2, 3);
		if (mn == a) {
			mn = getLightest(lmn, b, md);
			p[2] = mn;
			full.erase(mn);
		}
		else if (mn == lmn) {
			mn = getLightest(a, b, md);
			p[2] = mn;
			full.erase(mn);
		}
		else {
			mn = getLightest(lmn, a, md);
			p[2] = mn;
			full.erase(mn);
		}
	}
	int a, b, c;
	a=b=c=-1;
	for (auto x : full) {
		if (a==-1) {
			a=x;
		}
		else if (b==-1) {
			b=x;
		}
		else {
			c=x;
		}
	}
	mn = getLightest(a, b, c);
	p[3] = mn;
	full.erase(mn);
	int mx = getHeaviest(a, b, c);
	full.erase(mx);
	p[5] = mx;
	p[4] = *full.begin();
	int ans[6];
	for (int i=0; i<6; i++) {
		ans[i] = p[i];
	}
	answer(ans);
}
#Verdict Execution timeMemoryGrader output
Fetching results...