提出 #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++) {
#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 | ||||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |