답안 #770058

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
770058 2023-06-30T17:51:00 Z rainboy Xoractive (IZhO19_xoractive) C++17
100 / 100
2 ms 348 KB
#include "interactive.h"

using namespace std;

typedef vector<int> vi;

const int N = 100, L = 7, M = N * L;

unsigned int X = 12345;

int rand_() {
	return (X *= 3) >> 1;
}

int bb[M], ll[M], hh[M], m;

void sort(int *hh, int l, int r) {
	while (l < r) {
		int i = l, j = l, k = r, h = hh[l + rand_() % (r - l)], tmp;

		while (j < k)
			if (bb[hh[j]] == bb[h])
				j++;
			else if (bb[hh[j]] < bb[h]) {
				tmp = hh[i], hh[i] = hh[j], hh[j] = tmp;
				i++, j++;
			} else {
				k--;
				tmp = hh[j], hh[j] = hh[k], hh[k] = tmp;
			}
		sort(hh, l, i);
		l = k;
	}
}

vi guess(int n) {
	vi aa(n);
	aa[0] = ask(1);
	m = 0;
	for (int l = 0; l < L; l++) {
		vi ii; int k = 0;
		for (int i = 1; i < n; i++)
			if ((i & 1 << l) != 0)
				ii.push_back(i + 1), k++;
		if (k == 0)
			continue;
		vi xx = get_pairwise_xor(ii); ii.push_back(1); vi yy = get_pairwise_xor(ii);
		for (int i = 0, j = 0; j < (k + 1) * (k + 1); j++) {
			while (i < k * k && xx[i] < yy[j])
				i++;
			if (i < k * k && xx[i] == yy[j])
				i++;
			else
				bb[m] = yy[j], ll[m] = l, m++;
		}
	}
	for (int h = 0; h < m; h++)
		hh[h] = h;
	sort(hh, 0, m);
	for (int h = 0, h_, i; h < m; h = h_) {
		h_ = h, i = 0;
		while (h_ < m && bb[hh[h_]] == bb[hh[h]])
			i |= 1 << ll[hh[h_++]];
		aa[i] = aa[0] ^ bb[hh[h]];
	}
	return aa;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Correct 0 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 208 KB Output is correct
2 Correct 2 ms 336 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 2 ms 336 KB Output is correct
5 Correct 2 ms 336 KB Output is correct
6 Correct 2 ms 336 KB Output is correct
7 Correct 2 ms 336 KB Output is correct
8 Correct 2 ms 336 KB Output is correct
9 Correct 2 ms 244 KB Output is correct
10 Correct 2 ms 336 KB Output is correct
11 Correct 1 ms 208 KB Output is correct
12 Correct 2 ms 208 KB Output is correct
13 Correct 2 ms 332 KB Output is correct
14 Correct 2 ms 336 KB Output is correct
15 Correct 1 ms 336 KB Output is correct
16 Correct 2 ms 336 KB Output is correct
17 Correct 2 ms 208 KB Output is correct
18 Correct 2 ms 208 KB Output is correct
19 Correct 1 ms 336 KB Output is correct
20 Correct 2 ms 208 KB Output is correct
21 Correct 2 ms 336 KB Output is correct
22 Correct 2 ms 336 KB Output is correct
23 Correct 1 ms 336 KB Output is correct
24 Correct 2 ms 348 KB Output is correct
25 Correct 2 ms 336 KB Output is correct
26 Correct 2 ms 336 KB Output is correct
27 Correct 1 ms 336 KB Output is correct
28 Correct 2 ms 336 KB Output is correct
29 Correct 2 ms 208 KB Output is correct
30 Correct 2 ms 336 KB Output is correct
31 Correct 1 ms 336 KB Output is correct
32 Correct 2 ms 336 KB Output is correct
33 Correct 2 ms 336 KB Output is correct
34 Correct 2 ms 336 KB Output is correct
35 Correct 1 ms 336 KB Output is correct
36 Correct 2 ms 208 KB Output is correct
37 Correct 2 ms 336 KB Output is correct
38 Correct 2 ms 336 KB Output is correct
39 Correct 1 ms 336 KB Output is correct
40 Correct 2 ms 336 KB Output is correct
41 Correct 1 ms 208 KB Output is correct
42 Correct 2 ms 208 KB Output is correct
43 Correct 1 ms 208 KB Output is correct
44 Correct 2 ms 208 KB Output is correct
45 Correct 2 ms 336 KB Output is correct
46 Correct 2 ms 336 KB Output is correct
47 Correct 1 ms 336 KB Output is correct
48 Correct 2 ms 336 KB Output is correct
49 Correct 2 ms 336 KB Output is correct
50 Correct 2 ms 336 KB Output is correct
51 Correct 1 ms 336 KB Output is correct
52 Correct 2 ms 336 KB Output is correct
53 Correct 2 ms 336 KB Output is correct
54 Correct 2 ms 336 KB Output is correct
55 Correct 1 ms 208 KB Output is correct
56 Correct 2 ms 336 KB Output is correct
57 Correct 2 ms 340 KB Output is correct
58 Correct 2 ms 336 KB Output is correct
59 Correct 1 ms 336 KB Output is correct
60 Correct 2 ms 208 KB Output is correct
61 Correct 1 ms 336 KB Output is correct
62 Correct 2 ms 336 KB Output is correct
63 Correct 1 ms 208 KB Output is correct
64 Correct 1 ms 208 KB Output is correct
65 Correct 2 ms 336 KB Output is correct
66 Correct 1 ms 208 KB Output is correct
67 Correct 2 ms 336 KB Output is correct
68 Correct 2 ms 208 KB Output is correct
69 Correct 2 ms 336 KB Output is correct
70 Correct 2 ms 336 KB Output is correct
71 Correct 2 ms 208 KB Output is correct
72 Correct 1 ms 336 KB Output is correct
73 Correct 2 ms 208 KB Output is correct
74 Correct 1 ms 336 KB Output is correct
75 Correct 1 ms 336 KB Output is correct
76 Correct 2 ms 336 KB Output is correct
77 Correct 2 ms 208 KB Output is correct
78 Correct 2 ms 336 KB Output is correct
79 Correct 1 ms 208 KB Output is correct
80 Correct 2 ms 336 KB Output is correct
81 Correct 2 ms 332 KB Output is correct
82 Correct 1 ms 336 KB Output is correct
83 Correct 1 ms 312 KB Output is correct
84 Correct 2 ms 336 KB Output is correct
85 Correct 1 ms 336 KB Output is correct
86 Correct 2 ms 336 KB Output is correct
87 Correct 1 ms 336 KB Output is correct
88 Correct 1 ms 208 KB Output is correct
89 Correct 2 ms 208 KB Output is correct
90 Correct 2 ms 208 KB Output is correct
91 Correct 1 ms 336 KB Output is correct
92 Correct 2 ms 336 KB Output is correct
93 Correct 2 ms 208 KB Output is correct
94 Correct 2 ms 336 KB Output is correct
95 Correct 1 ms 208 KB Output is correct
96 Correct 1 ms 336 KB Output is correct
97 Correct 2 ms 336 KB Output is correct
98 Correct 2 ms 336 KB Output is correct
99 Correct 2 ms 336 KB Output is correct
100 Correct 2 ms 336 KB Output is correct