QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#288254#1133. Monster Game0002260 24ms4304kbC++172.0kb2023-12-22 12:08:122023-12-22 12:08:13

Judging History

This is the latest submission verdict.

  • [2023-12-22 12:08:13]
  • Judged
  • Verdict: 0
  • Time: 24ms
  • Memory: 4304kb
  • [2023-12-22 12:08:12]
  • Submitted

answer

#include "monster.h"
#include <bits/stdc++.h>

#define debug(...) fprintf (stderr, __VA_ARGS__)

void msort(std :: vector<int> &p) {
	if (p.size() == 1) return ;
	std :: vector<int> L, R;
	int mid = p.size() >> 1; -- mid;
	for (int i = 0; i <= mid; i ++) L.push_back (p[i]);
	for (int i = mid + 1; i < (int) p.size(); i ++) R.push_back (p[i]);
	msort (L); msort (R);
	p.clear();
	int i = 0, j = 0;
	while (i < L.size() || j < R.size()) {
		if (i == L.size()) p.push_back (R[j]), j ++;
		else if (j == R.size()) p.push_back (L[i]), i ++;
		else if (Query (L[i], R[j])) p.push_back (R[j]); 
		else p.push_back (R[j]);
	}
}

inline std :: vector<int> get(std :: vector<int> p) {
	std :: vector<int> ans = p;
	for (int i = 0; i < (int) p.size(); i ++) ans[p[i]] = i;
	return ans;
}

std :: vector<int> brute_force(int n) {
	std :: vector<int> p(n), cnt(n);
	std :: iota (p.begin(), p.end(), 0);
	for (int i = 0; i < n; i ++)
		for (int j = 0; j < n; j ++) if (i != j) if (Query (p[i], p[j])) ++ cnt[p[i]];
	std :: sort (p.begin(), p.end(), [&] (int x, int y) -> bool {
		if (cnt[x] != cnt[y]) return cnt[x] < cnt[y];
		return  Query (x, y);
	} );

	return p;
}

std :: vector<int> Solve(int n) {
	std :: vector<int> p(n);
	std :: iota (p.begin(), p.end(), 0);
	
	if (n <= 200) {
		return get (brute_force(n) );
	}

	msort (p);
	const int m = 30;
	std :: vector<int> cnt(n);
	for (int i = 0; i < m; i ++)
		for (int j = 0; j < m; j ++) if (i != j) if (Query (p[i], p[j])) ++ cnt[p[i]];
	int m1 = -1, m2 = -1;
	for (int i = 0; i < m; i ++) {
		if (cnt[p[i]] == 0) std :: swap (m1, m2), m2 = i;
	}

	if (! Query (m1, m2)) ; else std :: swap (m1, m2);

	int now = m1;
	std :: reverse (p.begin(), p.begin() + now + 1);
	now ++;
	for (int i = now; i < n; i ++) {
		if (Query (p[now - 1], p[i])) {
			std :: reverse (p.begin() + now, p.begin() + i + 1);
			now = i + 1;
		}
	}

	std :: reverse (p.begin() + now, p.end());

	return get (p);
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 10
Accepted
time: 1ms
memory: 3820kb

input:

4
0
1
1
1
0
0
0
1
0
0
1
1
1
0

output:

Q 0 1
Q 0 2
Q 0 3
Q 1 0
Q 1 2
Q 1 3
Q 2 0
Q 2 1
Q 2 3
Q 3 0
Q 3 1
Q 3 2
Q 2 1
Q 3 0
F 4
 2 1 0 3

result:

points 1.0 points  1.0

Test #2:

score: 10
Accepted
time: 1ms
memory: 4060kb

input:

4
1
0
0
0
1
1
1
0
0
1
0
1
1
0

output:

Q 0 1
Q 0 2
Q 0 3
Q 1 0
Q 1 2
Q 1 3
Q 2 0
Q 2 1
Q 2 3
Q 3 0
Q 3 1
Q 3 2
Q 2 0
Q 3 1
F 4
 1 2 0 3

result:

points 1.0 points  1.0

Test #3:

score: 10
Accepted
time: 1ms
memory: 3816kb

input:

4
1
1
0
0
1
0
0
0
1
1
1
0
0
0
1

output:

Q 0 1
Q 0 2
Q 0 3
Q 1 0
Q 1 2
Q 1 3
Q 2 0
Q 2 1
Q 2 3
Q 3 0
Q 3 1
Q 3 2
Q 2 1
Q 2 1
Q 3 0
F 4
 3 0 1 2

result:

points 1.0 points  1.0

Test #4:

score: 10
Accepted
time: 0ms
memory: 4024kb

input:

5
0
1
0
1
1
0
0
0
0
1
1
1
1
1
0
1
0
1
0
0
0
1

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 3 2
Q 4 1
F 5
 2 1 3 4 0

result:

points 1.0 points  1.0

Test #5:

score: 10
Accepted
time: 1ms
memory: 3748kb

input:

5
1
1
0
1
0
0
1
0
0
1
0
0
1
0
1
0
0
1
1
1
1
0

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 2 1
Q 4 0
F 5
 3 1 0 2 4

result:

points 1.0 points  1.0

Test #6:

score: 10
Accepted
time: 1ms
memory: 4056kb

input:

5
0
1
1
0
1
0
1
1
0
1
1
1
0
0
0
1
1
0
0
0
1
0
0

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 2 1
Q 4 3
Q 4 3
F 5
 2 4 3 0 1

result:

points 1.0 points  1.0

Test #7:

score: 10
Accepted
time: 1ms
memory: 3724kb

input:

6
1
1
0
1
0
0
1
1
1
1
0
0
0
0
1
1
0
1
1
1
0
0
1
0
0
1
0
0
0
1
0
1

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 3 1
Q 4 2
F 6
 3 4 1 5 0 2

result:

points 1.0 points  1.0

Test #8:

score: 10
Accepted
time: 1ms
memory: 3824kb

input:

6
0
0
1
0
0
1
0
1
1
1
1
1
1
0
1
0
0
0
1
1
1
0
1
0
1
1
0
0
0
0
1
1

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 2 1
Q 5 0
F 6
 1 5 4 2 3 0

result:

points 1.0 points  1.0

Test #9:

score: 10
Accepted
time: 1ms
memory: 3724kb

input:

6
1
1
1
0
1
0
1
0
1
1
0
0
1
0
0
0
1
0
0
1
1
0
1
1
1
0
0
1
0
0
1
1

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 4 0
Q 5 2
F 6
 5 3 1 2 4 0

result:

points 1.0 points  1.0

Test #10:

score: 10
Accepted
time: 1ms
memory: 3796kb

input:

7
0
0
1
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
0
0
0
1
0
0
1
0
1
0
0
0
1
1
0
1
1
0
1
0
1
1
1
1
0
0
0

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 0 6
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 1 6
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 2 6
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 3 6
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 4 6
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 5 6
Q 6 0
Q 6 1
Q 6 2
Q 6 3
Q 6 4
Q 6 5
Q 3 0
Q 3 0
Q 6 1
F 7
 0 5 3 1 2 4 6

result:

points 1.0 points  1.0

Test #11:

score: 10
Accepted
time: 1ms
memory: 3816kb

input:

7
0
1
0
1
1
1
1
0
0
0
1
1
0
1
1
1
1
1
1
1
0
1
1
1
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 0 6
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 1 6
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 2 6
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 3 6
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 4 6
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 5 6
Q 6 0
Q 6 1
Q 6 2
Q 6 3
Q 6 4
Q 6 5
Q 3 2
Q 6 5
Q 6 5
F 7
 4 3 5 6 2 0 1

result:

points 1.0 points  1.0

Test #12:

score: 10
Accepted
time: 1ms
memory: 3724kb

input:

7
0
0
0
1
0
0
1
0
1
1
0
1
1
1
1
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
1
1
1
1
1
0
1
0
1
1
1
1
1
1

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 0 6
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 1 6
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 2 6
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 3 6
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 4 6
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 5 6
Q 6 0
Q 6 1
Q 6 2
Q 6 3
Q 6 4
Q 6 5
Q 3 0
Q 6 5
F 7
 1 4 3 0 2 6 5

result:

points 1.0 points  1.0

Test #13:

score: 10
Accepted
time: 0ms
memory: 3772kb

input:

8
0
0
1
0
1
0
0
1
0
0
1
1
0
1
1
1
1
1
1
0
1
0
1
0
0
1
0
1
1
0
0
1
1
1
1
0
0
0
0
0
0
1
1
1
1
1
0
1
1
1
0
0
0
0
0
0
1
0
0

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 0 6
Q 0 7
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 1 6
Q 1 7
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 2 6
Q 2 7
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 3 6
Q 3 7
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 4 6
Q 4 7
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 5 6
Q 5 7
Q 6 0
Q 6 1
Q 6 2
Q 6 3
Q 6 4
Q 6 5
Q 6 7
Q 7 0
...

result:

points 1.0 points  1.0

Test #14:

score: 10
Accepted
time: 0ms
memory: 3724kb

input:

8
1
1
0
1
1
0
1
0
1
0
0
0
0
0
0
0
0
1
1
0
0
1
1
1
1
1
1
0
0
1
0
0
0
0
0
0
1
0
0
1
1
0
1
1
1
0
1
0
0
0
1
1
1
1
1
1
1
1

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 0 6
Q 0 7
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 1 6
Q 1 7
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 2 6
Q 2 7
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 3 6
Q 3 7
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 4 6
Q 4 7
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 5 6
Q 5 7
Q 6 0
Q 6 1
Q 6 2
Q 6 3
Q 6 4
Q 6 5
Q 6 7
Q 7 0
...

result:

points 1.0 points  1.0

Test #15:

score: 10
Accepted
time: 1ms
memory: 3724kb

input:

8
1
0
0
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
0
0
0
1
1
1
0
1
0
0
1
1
1
1
0
1
1
1
1
1
0
1
1
0
1
0
1
1
0
0
0
1
1
1
1
0
1
1
1
0

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 0 6
Q 0 7
Q 1 0
Q 1 2
Q 1 3
Q 1 4
Q 1 5
Q 1 6
Q 1 7
Q 2 0
Q 2 1
Q 2 3
Q 2 4
Q 2 5
Q 2 6
Q 2 7
Q 3 0
Q 3 1
Q 3 2
Q 3 4
Q 3 5
Q 3 6
Q 3 7
Q 4 0
Q 4 1
Q 4 2
Q 4 3
Q 4 5
Q 4 6
Q 4 7
Q 5 0
Q 5 1
Q 5 2
Q 5 3
Q 5 4
Q 5 6
Q 5 7
Q 6 0
Q 6 1
Q 6 2
Q 6 3
Q 6 4
Q 6 5
Q 6 7
Q 7 0
...

result:

points 1.0 points  1.0

Test #16:

score: 0
Wrong Answer
time: 21ms
memory: 3820kb

input:

198
1
0
0
1
1
1
1
1
1
1
1
0
1
0
0
1
1
1
0
1
0
1
0
0
1
1
1
0
0
0
1
1
1
1
1
1
0
1
0
1
0
1
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
0
1
0
1
0
0
0
1
1
1
1
0
1
1
1
1
1
0
1
1
0
1
1
0
1
1
0
1
1
1
0
1
1
1
1
1
1
0
1
0
1
1
1
1
1
0
0
1
1
1
1
0
1
1
1
0
0
0
1
1
0
1
1
0
1
1
1
0
0
1
1
0
0
1
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
...

output:

Q 0 1
Q 0 2
Q 0 3
Q 0 4
Q 0 5
Q 0 6
Q 0 7
Q 0 8
Q 0 9
Q 0 10
Q 0 11
Q 0 12
Q 0 13
Q 0 14
Q 0 15
Q 0 16
Q 0 17
Q 0 18
Q 0 19
Q 0 20
Q 0 21
Q 0 22
Q 0 23
Q 0 24
Q 0 25
Q 0 26
Q 0 27
Q 0 28
Q 0 29
Q 0 30
Q 0 31
Q 0 32
Q 0 33
Q 0 34
Q 0 35
Q 0 36
Q 0 37
Q 0 38
Q 0 39
Q 0 40
Q 0 41
Q 0 42
Q 0 43
Q 0 44
Q...

result:

wrong answer Wrong Answer [6]

Subtask #2:

score: 0
Wrong Answer

Test #33:

score: 0
Wrong Answer
time: 14ms
memory: 4304kb

input:

995
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
...

output:

Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
...

result:

wrong answer Wrong Answer [6]

Subtask #3:

score: 0
Wrong Answer

Test #45:

score: 0
Wrong Answer
time: 24ms
memory: 3972kb

input:

998
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

output:

Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
Q 1 2
...

result:

wrong answer Wrong Answer [6]