답안 #480122

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
480122 2021-10-14T18:01:35 Z rainboy Slagalica (COCI19_slagalica2) C
35 / 70
55 ms 2744 KB
#include <stdio.h>

#define T	4
#define N	100000

unsigned int X = 12345;

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

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

		while (j < k)
			if (aa[j] == a)
				j++;
			else if (aa[j] > a) {
				tmp = aa[i], aa[i] = aa[j], aa[j] = tmp;
				i++, j++;
			} else {
				k--;
				tmp = aa[j], aa[j] = aa[k], aa[k] = tmp;
			}
		sort(aa, l, i);
		l = k;
	}
}

int aa[T][N], kk[N];

int ok(int *kk, int u, int v) {
	if (kk[0] + kk[3] == 0)
		return u == v && (u == 0 ? kk[2] == 0 : kk[1] == 0);
	else if (u == 0 && v == 1)
		return kk[0] == kk[3] + 1;
	else if (u == 1 && v == 0)
		return kk[3] == kk[0] + 1;
	else
		return kk[0] == kk[3];
}

int main() {
	int n, i, t, u, v, a_, b_;

	scanf("%d", &n);
	u = v = -1, a_ = b_ = -1;
	for (i = 0; i < n; i++) {
		int a;

		scanf("%d%d", &t, &a);
		if (t == 5)
			u = 1, a_ = a;
		else if (t == 6)
			u = 0, a_ = a;
		else if (t == 7)
			v = 0, b_ = a;
		else if (t == 8)
			v = 1, b_ = a;
		else
			t--, aa[t][kk[t]++] = a;
	}
	if (!ok(kk, u, v)) {
		printf("-1\n");
		return 0;
	}
	for (t = 0; t < T; t++)
		sort(aa[t], 0, kk[t]);
	printf("%d", a_);
	for (i = 0; i < n - 2; i++) {
		int t_;

		t_ = -1;
		for (t = 0; t < T; t++)
			if (kk[t] > 0 && u == t / 2) {
				kk[t]--;
				if (ok(kk, t % 2 ^ 1, v) && (t_ == -1 || aa[t_][kk[t_] - 1] > aa[t][kk[t] - 1]))
					t_ = t;
				kk[t]++;
			}
		t = t_;
		printf(" %d", aa[t][--kk[t]]), u = t % 2 ^ 1;
	}
	printf(" %d\n", b_);
	return 0;
}

Compilation message

slagalica.c: In function 'main':
slagalica.c:47:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |  scanf("%d", &n);
      |  ^~~~~~~~~~~~~~~
slagalica.c:52:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   52 |   scanf("%d%d", &t, &a);
      |   ^~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 36 ms 2360 KB Output is correct
2 Correct 18 ms 1740 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 2356 KB Output is correct
2 Correct 17 ms 1620 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 24 ms 1808 KB Output is correct
2 Correct 40 ms 2424 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 1484 KB Output is correct
2 Correct 48 ms 2312 KB Output is correct
3 Correct 42 ms 2656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 38 ms 2388 KB Output is correct
2 Correct 20 ms 1656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 37 ms 2324 KB Output is correct
2 Correct 23 ms 1664 KB Output is correct
3 Correct 40 ms 2640 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 18 ms 1592 KB Output is correct
2 Incorrect 44 ms 2360 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 42 ms 2704 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 43 ms 2320 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 55 ms 2744 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 35 ms 2428 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 36 ms 2320 KB Output isn't correct
2 Halted 0 ms 0 KB -