Submission #405692

# Submission time Handle Problem Language Result Execution time Memory
405692 2021-05-16T19:00:13 Z rainboy Unscrambling a Messy Bug (IOI16_messy) C
100 / 100
6 ms 2196 KB
#include "messy_c.h"
#include <string.h>

#define N	128

char cc[N + 1]; int pp[N];

void write(int l, int r) {
	int m, i;

	if (r - l == 1)
		return;
	m = (l + r) / 2;
	memset(cc + l, '0', (r - l) * sizeof *cc);
	for (i = l; i < m; i++)
		cc[i] = '1', add_element(cc), cc[i] = '0';
	memset(cc + m, '1', (r - m) * sizeof *cc), write(l, m);
	memset(cc + l, '1', (m - l) * sizeof *cc), write(m, r);
}

void read(int l, int r) {
	int m, i, j;

	if (r - l == 1)
		return;
	m = (l + r) / 2;
	for (i = l; i < r; i++)
		cc[pp[i]] = '0';
	i = l, j = r;
	while (i < j) {
		int x, tmp;

		cc[pp[i]] = '1', x = check_element(cc), cc[pp[i]] = '0';
		if (x)
			i++;
		else {
			j--;
			tmp = pp[i], pp[i] = pp[j], pp[j] = tmp;
		}
	}
	for (i = m; i < r; i++)
		cc[pp[i]] = '1';
	read(l, m);
	for (i = l; i < m; i++)
		cc[pp[i]] = '1';
	read(m, r);
}

void restore_permutation(int n, int w, int r, int *ii) {
	int i;

	write(0, n);
	compile_set();
	for (i = 0; i < n; i++)
		pp[i] = i;
	read(0, n);
	for (i = 0; i < n; i++)
		ii[pp[i]] = i;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB n = 8
2 Correct 1 ms 204 KB n = 8
3 Correct 1 ms 276 KB n = 8
4 Correct 1 ms 204 KB n = 8
5 Correct 1 ms 204 KB n = 8
6 Correct 1 ms 204 KB n = 8
7 Correct 1 ms 204 KB n = 8
8 Correct 1 ms 204 KB n = 8
9 Correct 1 ms 204 KB n = 8
10 Correct 1 ms 204 KB n = 8
11 Correct 1 ms 204 KB n = 8
12 Correct 1 ms 204 KB n = 8
13 Correct 1 ms 204 KB n = 8
14 Correct 1 ms 204 KB n = 8
15 Correct 1 ms 204 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB n = 32
2 Correct 1 ms 332 KB n = 32
3 Correct 1 ms 332 KB n = 32
4 Correct 1 ms 276 KB n = 32
5 Correct 1 ms 332 KB n = 32
6 Correct 1 ms 272 KB n = 32
7 Correct 1 ms 332 KB n = 32
8 Correct 1 ms 332 KB n = 32
9 Correct 1 ms 332 KB n = 32
10 Correct 1 ms 280 KB n = 32
11 Correct 1 ms 332 KB n = 32
12 Correct 1 ms 332 KB n = 32
13 Correct 1 ms 332 KB n = 32
14 Correct 1 ms 332 KB n = 32
15 Correct 1 ms 332 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB n = 32
2 Correct 1 ms 332 KB n = 32
3 Correct 1 ms 332 KB n = 32
4 Correct 1 ms 332 KB n = 32
5 Correct 1 ms 368 KB n = 32
6 Correct 1 ms 332 KB n = 32
7 Correct 1 ms 272 KB n = 32
8 Correct 1 ms 332 KB n = 32
9 Correct 1 ms 276 KB n = 32
10 Correct 1 ms 332 KB n = 32
11 Correct 1 ms 280 KB n = 32
12 Correct 1 ms 332 KB n = 32
13 Correct 1 ms 332 KB n = 32
14 Correct 1 ms 276 KB n = 32
15 Correct 1 ms 332 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2124 KB n = 128
2 Correct 4 ms 2124 KB n = 128
3 Correct 4 ms 2124 KB n = 128
4 Correct 4 ms 2192 KB n = 128
5 Correct 4 ms 2124 KB n = 128
6 Correct 4 ms 2116 KB n = 128
7 Correct 4 ms 2124 KB n = 128
8 Correct 4 ms 2124 KB n = 128
9 Correct 4 ms 2124 KB n = 128
10 Correct 4 ms 2124 KB n = 128
11 Correct 4 ms 2124 KB n = 128
12 Correct 6 ms 2124 KB n = 128
13 Correct 4 ms 2124 KB n = 128
14 Correct 4 ms 2124 KB n = 128
15 Correct 5 ms 2124 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2124 KB n = 128
2 Correct 4 ms 2124 KB n = 128
3 Correct 4 ms 2192 KB n = 128
4 Correct 4 ms 2124 KB n = 128
5 Correct 4 ms 2124 KB n = 128
6 Correct 4 ms 2124 KB n = 128
7 Correct 4 ms 2196 KB n = 128
8 Correct 4 ms 2124 KB n = 128
9 Correct 4 ms 2124 KB n = 128
10 Correct 5 ms 2124 KB n = 128
11 Correct 4 ms 2124 KB n = 128
12 Correct 4 ms 2124 KB n = 128
13 Correct 4 ms 2124 KB n = 128
14 Correct 4 ms 2124 KB n = 128
15 Correct 4 ms 2124 KB n = 128