提出 #47343941


ソースコード 拡げる

Copy
#include <stdio.h>
int H, W;
char c[2048][2048];
int rowsum[2048][26], colsum[2048][26];
char rowdeleted[2048], coldeleted[2048];
int rowminus[26], colminus[26];
int rowdelnum, coldelnum;
int rowdellist[2048][2], coldellist[2048][2];
int main(void) {
int i, j;
int ans;
if (scanf("%d%d", &H, &W) != 2) return 1;
for (i = 0; i < H; i++) {
if (scanf("%2047s", c[i]) != 1) return 1;
}
for (i = 0; i < H; i++) {
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>

int H, W;
char c[2048][2048];

int rowsum[2048][26], colsum[2048][26];
char rowdeleted[2048], coldeleted[2048];

int rowminus[26], colminus[26];

int rowdelnum, coldelnum;
int rowdellist[2048][2], coldellist[2048][2];

int main(void) {
	int i, j;
	int ans;
	if (scanf("%d%d", &H, &W) != 2) return 1;
	for (i = 0; i < H; i++) {
		if (scanf("%2047s", c[i]) != 1) return 1;
	}
	for (i = 0; i < H; i++) {
		for (j = 0; j < W; j++) {
			int idx = c[i][j] - 'a';
			if (0 <= idx && idx < 26) {
				rowsum[i][idx]++;
				colsum[j][idx]++;
			}
		}
	}
	for (;;) {
		rowdelnum = 0;
		coldelnum = 0;
		/* 各行および列について、印をつける条件を満たすかをチェックする */
		for (i = 0; i < H; i++) {
			if (!rowdeleted[i]) {
				int idx = -1;
				for (j = 0; j < 26; j++) {
					int curnum = rowsum[i][j] - rowminus[j];
					if (curnum > 0) {
						/* 1枚だけ or 他の色のクッキーがあった → 失格 */
						if (curnum == 1 || idx >= 0) {
							idx = -999;
							break;
						} else {
							idx = j;
						}
					}
				}
				if (idx >= 0) {
					rowdellist[rowdelnum][0] = i;
					rowdellist[rowdelnum][1] = idx;
					rowdelnum++;
				}
			}
		}
		for (i = 0; i < W; i++) {
			if (!coldeleted[i]) {
				int idx = -1;
				for (j = 0; j < 26; j++) {
					int curnum = colsum[i][j] - colminus[j];
					if (curnum > 0) {
						/* 1枚だけ or 他の色のクッキーがあった → 失格 */
						if (curnum == 1 || idx >= 0) {
							idx = -999;
							break;
						} else {
							idx = j;
						}
					}
				}
				if (idx >= 0) {
					coldellist[rowdelnum][0] = i;
					coldellist[rowdelnum][1] = idx;
					coldelnum++;
				}
			}
		}
		/* 印をつけたクッキーが無ければ終了 */
		if (rowdelnum == 0 && coldelnum == 0) break;
		/* 印をつけたクッキーを取り除く */
		for (i = 0; i < rowdelnum; i++) {
			rowdeleted[rowdellist[i][0]] = 1;
			colminus[rowdellist[i][1]]++;
		}
		for (i = 0; i < coldelnum; i++) {
			coldeleted[coldellist[i][0]] = 1;
			rowminus[coldellist[i][1]]++;
		}
	}
	/* 残ったクッキーの枚数を数える */
	ans = 0;
	for (i = 0; i < H; i++) {
		if (!rowdeleted[i]) {
			for (j = 0; j < 26; j++) {
				ans += rowsum[i][j] - rowminus[j];
			}
		}
	}
	printf("%d\n", ans);
	return 0;
}

提出情報

提出日時
問題 D - Magical Cookies
ユーザ mikecat
言語 C (gcc 12.2.0)
得点 0
コード長 2399 Byte
結果 WA
実行時間 93 ms
メモリ 6152 KB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 400
結果
AC × 3
AC × 14
WA × 22
セット名 テストケース
Sample sample00.txt, sample01.txt, sample02.txt
All sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt
ケース名 結果 実行時間 メモリ
sample00.txt AC 1 ms 1748 KB
sample01.txt AC 1 ms 1712 KB
sample02.txt AC 1 ms 1748 KB
testcase00.txt AC 14 ms 5968 KB
testcase01.txt WA 22 ms 5976 KB
testcase02.txt WA 33 ms 6016 KB
testcase03.txt WA 52 ms 6092 KB
testcase04.txt WA 86 ms 5960 KB
testcase05.txt AC 15 ms 6040 KB
testcase06.txt WA 21 ms 6088 KB
testcase07.txt WA 17 ms 6108 KB
testcase08.txt WA 17 ms 6060 KB
testcase09.txt WA 19 ms 6040 KB
testcase10.txt AC 15 ms 5820 KB
testcase11.txt WA 21 ms 6020 KB
testcase12.txt WA 19 ms 6052 KB
testcase13.txt WA 19 ms 5672 KB
testcase14.txt WA 20 ms 6008 KB
testcase15.txt AC 17 ms 6112 KB
testcase16.txt WA 19 ms 5828 KB
testcase17.txt WA 20 ms 6012 KB
testcase18.txt WA 20 ms 6072 KB
testcase19.txt WA 16 ms 6036 KB
testcase20.txt AC 17 ms 6148 KB
testcase21.txt WA 16 ms 5720 KB
testcase22.txt WA 19 ms 6092 KB
testcase23.txt WA 17 ms 5548 KB
testcase24.txt WA 21 ms 6132 KB
testcase25.txt AC 43 ms 6092 KB
testcase26.txt AC 43 ms 6088 KB
testcase27.txt AC 48 ms 6124 KB
testcase28.txt AC 47 ms 5984 KB
testcase29.txt AC 18 ms 6056 KB
testcase30.txt WA 93 ms 6152 KB
testcase31.txt AC 17 ms 6128 KB
testcase32.txt WA 89 ms 6148 KB


2023-11-06 (月)
19:31:45 +00:00