Submission #38696

# Submission time Handle Problem Language Result Execution time Memory
38696 2018-01-06T08:44:31 Z 14kg Gondola (IOI14_gondola) C++11
75 / 100
29 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++;
	}
	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 9 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 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
6 Correct 3 ms 4236 KB Output is correct
7 Correct 9 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
11 Correct 0 ms 4236 KB Output is correct
12 Correct 0 ms 4236 KB Output is correct
13 Correct 6 ms 4236 KB Output is correct
14 Correct 0 ms 4236 KB Output is correct
15 Correct 13 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 13 ms 4236 KB Output is correct
12 Correct 9 ms 4236 KB Output is correct
13 Correct 13 ms 4236 KB Output is correct
14 Correct 13 ms 4236 KB Output is correct
15 Correct 29 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 3 ms 4236 KB Output is correct
10 Incorrect 19 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 9 ms 4236 KB Output is correct
10 Incorrect 6 ms 4236 KB Output isn't correct
11 Halted 0 ms 0 KB -