Submission #38699

# Submission time Handle Problem Language Result Execution time Memory
38699 2018-01-06T09:10:47 Z 14kg Gondola (IOI14_gondola) C++11
75 / 100
19 ms 4236 KB
#include "gondola.h"
#define MOD 1000000009

int n;
int g_num, valid_w[250001], replace_num[100000];
int out_temp[100000];
long long count_tot = 1;

int valid(int _n, int in[]) {
	bool g_check = false;
	
	n = _n;
	for (int i = 0; i < n; i++) {
		if (g_check) {
			g_num = g_num == n ? 1 : g_num + 1;
		}
		if (valid_w[in[i]]) return 0;
		valid_w[in[i]] = i;

		if (in[i] <= n) {
			if (g_check && g_num != in[i]) return 0;
			else if (!g_check) {
				g_check = true, g_num = in[i];
			}
		}
	}
	return 1;
}

int replacement(int _n, int in[], int out[]) {
	int out_len = 0, w, k = _n + 1;
	long long cnt = 0;

	if (!valid(_n, in)) return -1;

	for (int i = 0; i < n; i++) {
		g_num = g_num == n ? 1 : g_num + 1;
		replace_num[i] = g_num;
		if (in[i] > n) cnt++;
	}

	if (cnt == n) count_tot *= (long long)n;
	for (int i = 0; i < n; i++) {
		w = replace_num[i];
		while (k <= in[i]) {
			if (valid_w[k] && valid_w[k] != i) {
				out[out_len++] = replace_num[valid_w[k]];
				k++, cnt--;
			}
			else if (valid_w[k]) {
				out[out_len++] = w;
				w = k++, cnt--;
			}
			else {
				out[out_len++] = w;
				w = k++;
				count_tot *= cnt, count_tot %= MOD;
			}
		}
	} return out_len;
}

int countReplacement(int _n, int in[]) {
	if (replacement(_n, in, out_temp) < 0) return 0;
	return (int)count_tot;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
6 Correct 3 ms 4236 KB Output is correct
7 Correct 16 ms 4236 KB Output is correct
8 Correct 6 ms 4236 KB Output is correct
9 Correct 3 ms 4236 KB Output is correct
10 Correct 6 ms 4236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
6 Correct 3 ms 4236 KB Output is correct
7 Correct 13 ms 4236 KB Output is correct
8 Correct 9 ms 4236 KB Output is correct
9 Correct 3 ms 4236 KB Output is correct
10 Correct 13 ms 4236 KB Output is correct
11 Correct 0 ms 4236 KB Output is correct
12 Correct 0 ms 4236 KB Output is correct
13 Correct 9 ms 4236 KB Output is correct
14 Correct 0 ms 4236 KB Output is correct
15 Correct 9 ms 4236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
6 Correct 0 ms 4236 KB Output is correct
7 Correct 0 ms 4236 KB Output is correct
8 Correct 0 ms 4236 KB Output is correct
9 Correct 0 ms 4236 KB Output is correct
10 Correct 0 ms 4236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
6 Correct 0 ms 4236 KB Output is correct
7 Correct 0 ms 4236 KB Output is correct
8 Correct 0 ms 4236 KB Output is correct
9 Correct 0 ms 4236 KB Output is correct
10 Correct 0 ms 4236 KB Output is correct
11 Correct 6 ms 4236 KB Output is correct
12 Correct 19 ms 4236 KB Output is correct
13 Correct 13 ms 4236 KB Output is correct
14 Correct 9 ms 4236 KB Output is correct
15 Correct 19 ms 4236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
6 Correct 0 ms 4236 KB Output is correct
7 Correct 0 ms 4236 KB Output is correct
8 Correct 0 ms 4236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
6 Correct 0 ms 4236 KB Output is correct
7 Correct 0 ms 4236 KB Output is correct
8 Correct 0 ms 4236 KB Output is correct
9 Correct 13 ms 4236 KB Output is correct
10 Incorrect 13 ms 4236 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4236 KB Output is correct
2 Correct 0 ms 4236 KB Output is correct
3 Correct 0 ms 4236 KB Output is correct
4 Correct 0 ms 4236 KB Output is correct
5 Correct 0 ms 4236 KB Output is correct
6 Correct 0 ms 4236 KB Output is correct
7 Correct 0 ms 4236 KB Output is correct
8 Correct 0 ms 4236 KB Output is correct
9 Correct 16 ms 4236 KB Output is correct
10 Incorrect 9 ms 4236 KB Output isn't correct
11 Halted 0 ms 0 KB -