提出 #77794269


ソースコード 拡げる

Copy
#include <stdio.h>
#include <stdlib.h>
struct event_s {
int from, to;
};
int ec[312345];
struct event_s* es[312345];
/* add event */
void ae(int pos, struct event_s e) {
es[pos] = realloc(es[pos], sizeof(*es[pos]) * (ec[pos] + 1));
if (es[pos] == NULL) exit(2);
es[pos][ec[pos]++] = e;
}
int cnt[312345];
int main(void) {
int N, M;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <stdlib.h>

struct event_s {
	int from, to;
};

int ec[312345];
struct event_s* es[312345];

/* add event */
void ae(int pos, struct event_s e) {
	es[pos] = realloc(es[pos], sizeof(*es[pos]) * (ec[pos] + 1));
	if (es[pos] == NULL) exit(2);
	es[pos][ec[pos]++] = e;
}

int cnt[312345];

int main(void) {
	int N, M;
	int i;
	int ans;
	if (scanf("%d%d", &N, &M) != 2) return 1;
	for (i = 0; i < N; i++) {
		int A, D, B;
		if (scanf("%d%d%d", &A, &D, &B) != 3) return 1;
		if (D <= 1) {
			ae(1, (struct event_s){ 0, B });
		} else {
			ae(1, (struct event_s){ 0, A });
			if (A != B) ae(D, (struct event_s){ A, B });
		}
	}
	cnt[0] = N;
	ans = 1;
	for (i = 1; i <= M; i++) {
		int j;
		for (j = 0; j < ec[i]; j++) {
			if (--cnt[es[i][j].from] == 0) ans--;
			if (cnt[es[i][j].to]++ == 0) ans++;
		}
		printf("%d\n", ans);
	}
	return 0;
}

提出情報

提出日時
問題 C - Plumage Palette
ユーザ mikecat
言語 C23 (GCC 14.2.0)
得点 300
コード長 910 Byte
結果 AC
実行時間 83 ms
メモリ 18860 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 300 / 300
結果
AC × 1
AC × 16
セット名 テストケース
Sample sample_01.txt
All sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 0 ms 1608 KiB
test_01.txt AC 0 ms 1796 KiB
test_02.txt AC 11 ms 1624 KiB
test_03.txt AC 35 ms 5352 KiB
test_04.txt AC 79 ms 15532 KiB
test_05.txt AC 79 ms 15528 KiB
test_06.txt AC 79 ms 15528 KiB
test_07.txt AC 79 ms 15532 KiB
test_08.txt AC 44 ms 11176 KiB
test_09.txt AC 67 ms 11468 KiB
test_10.txt AC 80 ms 18860 KiB
test_11.txt AC 83 ms 18852 KiB
test_12.txt AC 53 ms 8616 KiB
test_13.txt AC 53 ms 8620 KiB
test_14.txt AC 73 ms 16988 KiB
test_15.txt AC 79 ms 15532 KiB


2026-07-25 (土)
08:11:54 +09:00