Submission #70614

# Submission time Handle Problem Language Result Execution time Memory
70614 2018-08-23T07:33:47 Z Navick Scales (IOI15_scales) C++17
55.5556 / 100
4 ms 628 KB
#include "scales.h"
#include <bits/stdc++.h>

#define F first
#define S second
#define pb push_back
#define pii pair<int, int>

using namespace std;

typedef long long ll;

const int maxN = 6;

vector <int> t;
int ans[maxN];

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

void orderCoins() {

	int a = getHeaviest(1, 2, 3);
	int b = getHeaviest(4, 5, 6);

	t.resize(0);
	for (int i=4; i<=6; i++)
		if(i != b) t.pb(i);

	int a1 = getHeaviest(a, t[0], t[1]);

	t.resize(0);
	for (int i=1; i<=3; i++)
		if(i != a) t.pb(i);

	int b1 = getHeaviest(b, t[0], t[1]);

	if(a1 <= 3 && b1 <= 3)
	{
		ans[0] = a;
		ans[1] = b1;

		int c = 6;
		for (int i=1; i<=3; i++)
			if(i == a || i == b1) c -= i;

		t.resize(0);
		for (int i=4; i<=6; i++)
			if(i != b) t.pb(i);

		int g = getHeaviest(c, t[0], t[1]);

		if(g == c)
		{
			ans[3] = getLightest(ans[0], b, c);
			ans[2] = b + c - ans[3];

			ans[5] = getLightest(ans[0], t[0], t[1]);
			ans[4] = t[0] + t[1] - ans[5];

			reverse(ans, ans + maxN);
			answer(ans);
			return ;
		}else
		{
			ans[2] = b;
			ans[3] = g;
			int oth = t[0] + t[1] - g;

			ans[5] = getLightest(ans[0], c, oth);
			ans[4] = oth + c - ans[5];

			reverse(ans, ans + maxN);
			answer(ans);
			return ;
		}

	}else if(a1 >= 4 && b1 >= 4)
	{
		ans[0] = b;
		ans[1] = a1;

		int c = 15;
		for (int i=4; i<=6; i++)
			if(i == b || i == a1) c -= i;

		t.resize(0);
		for (int i=1; i<=3; i++)
			if(i != a) t.pb(i);

		int g = getHeaviest(c, t[0], t[1]);

		if(g == c)
		{
			ans[3] = getLightest(ans[0], a, c);
			ans[2] = a + c - ans[3];

			ans[5] = getLightest(ans[0], t[0], t[1]);
			ans[4] = t[0] + t[1] - ans[5];

			reverse(ans, ans + maxN);
			answer(ans);
			return ;
		}else
		{
			ans[2] = a;
			ans[3] = g;
			int oth = t[0] + t[1] - g;

			ans[5] = getLightest(ans[0], c, oth);
			ans[4] = oth + c - ans[5];

			reverse(ans, ans + maxN);
			answer(ans);
			return ;

		}
	}else
	{
		t.resize(0);
		for (int i=1; i<=6; i++)
			if(i != a && i != b) t.pb(i);
		int c1 = getHeaviest(t[0], t[1], t[2]);

		int r = t[3];

		t.resize(0);
		for (int i=1; i<=6; i++)
			if(i != a && i != b && i != c1) t.pb(i);

		int c2 = getLightest(t[0], t[1], t[2]);

		if(c2 != r)
		{
			ans[5] = c2;

			t.resize(0);
			for (int i=1; i<=6; i++)
				if(i != a && i != b && i != c2 && i != r && i != c1) t.pb(i);

			int md = getMedian(t[0], c1, r);

			if(md == c1) ans[2] = r, ans[3] = c1, ans[4] = t[0];
			else if(md == t[0]) ans[2] = c1, ans[3] = t[0], ans[4] = r;
			else ans[2] = c1, ans[3] = r, ans[4] = t[0];

		}else
		{
			ans[5] = c2;
			ans[2] = c1;
			t.resize(0);
			for (int i=1; i<=6; i++) 
				if(i != a && i != b && i != c1 && i != c2) t.pb(i);
			
			int g = getLightest(c1, t[0], t[1]);
			ans[4] = g;
			ans[3] = t[0] + t[1] - g;

		}

		ans[0] = getHeaviest(a, b, ans[5]);
		ans[1] = a + b - ans[0];

		reverse(ans, ans + maxN);
		answer(ans);

		return ;
	}
}

Compilation message

In file included from grader.c:2:0:
graderlib.c: In function 'void answer(int*)':
graderlib.c:53:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     if (_ghksjhdfkae19ga_ > 1) 
     ^~
graderlib.c:56:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
  for (i = 0; i < 6; i++) {
  ^~~
scales.cpp: In function 'void init(int)':
scales.cpp:18:15: warning: unused parameter 'T' [-Wunused-parameter]
 void init(int T) {
               ^
# Verdict Execution time Memory Grader output
1 Partially correct 2 ms 248 KB Output is partially correct
2 Partially correct 3 ms 488 KB Output is partially correct
3 Partially correct 3 ms 488 KB Output is partially correct
4 Partially correct 3 ms 488 KB Output is partially correct
5 Partially correct 3 ms 488 KB Output is partially correct
6 Partially correct 3 ms 488 KB Output is partially correct
7 Partially correct 3 ms 488 KB Output is partially correct
8 Partially correct 2 ms 488 KB Output is partially correct
9 Partially correct 3 ms 516 KB Output is partially correct
10 Partially correct 2 ms 516 KB Output is partially correct
11 Partially correct 2 ms 516 KB Output is partially correct
12 Partially correct 3 ms 592 KB Output is partially correct
13 Partially correct 2 ms 592 KB Output is partially correct
14 Partially correct 3 ms 592 KB Output is partially correct
15 Partially correct 4 ms 592 KB Output is partially correct
16 Partially correct 2 ms 592 KB Output is partially correct
17 Partially correct 2 ms 628 KB Output is partially correct
18 Partially correct 3 ms 628 KB Output is partially correct
19 Partially correct 2 ms 628 KB Output is partially correct
20 Partially correct 2 ms 628 KB Output is partially correct
21 Partially correct 3 ms 628 KB Output is partially correct
22 Partially correct 2 ms 628 KB Output is partially correct
23 Partially correct 2 ms 628 KB Output is partially correct
24 Partially correct 3 ms 628 KB Output is partially correct
25 Partially correct 3 ms 628 KB Output is partially correct
26 Partially correct 3 ms 628 KB Output is partially correct
27 Partially correct 3 ms 628 KB Output is partially correct
28 Partially correct 3 ms 628 KB Output is partially correct
29 Partially correct 3 ms 628 KB Output is partially correct
30 Partially correct 2 ms 628 KB Output is partially correct
31 Partially correct 3 ms 628 KB Output is partially correct
32 Partially correct 2 ms 628 KB Output is partially correct
33 Partially correct 2 ms 628 KB Output is partially correct
34 Partially correct 3 ms 628 KB Output is partially correct
35 Partially correct 3 ms 628 KB Output is partially correct
36 Partially correct 3 ms 628 KB Output is partially correct
37 Partially correct 2 ms 628 KB Output is partially correct
38 Partially correct 3 ms 628 KB Output is partially correct
39 Partially correct 2 ms 628 KB Output is partially correct
40 Partially correct 3 ms 628 KB Output is partially correct