Submission #72649358
Source Code Expand
Copy
#include <stdio.h>char have[2][256];int main(void) {int n;int turn = 0, ba = 0;int i;int s1 = 0, s2 = 0;if (scanf("%d", &n) != 1) return 1;for (i = 0; i < n; i++) {int card;if (scanf("%d", &card) != 1) return 1;have[0][card] = 1;}for (i = 1; i <= 2 * n; i++) {have[1][i] = !have[0][i];}for (;;) {/* 手持ちのカードが無くなったかを判定 */int exists = 0;
#include <stdio.h>
char have[2][256];
int main(void) {
int n;
int turn = 0, ba = 0;
int i;
int s1 = 0, s2 = 0;
if (scanf("%d", &n) != 1) return 1;
for (i = 0; i < n; i++) {
int card;
if (scanf("%d", &card) != 1) return 1;
have[0][card] = 1;
}
for (i = 1; i <= 2 * n; i++) {
have[1][i] = !have[0][i];
}
for (;;) {
/* 手持ちのカードが無くなったかを判定 */
int exists = 0;
for (i = 1; i <= 2 * n; i++) {
if (have[0][i]) exists |= 1;
if (have[1][i]) exists |= 2;
}
if (exists != 3) break;
/* 出すカードを決める */
exists = 0;
for (i = 1; i <= 2 * n; i++) {
if (have[turn][i] && ba < i) {
ba = i;
have[turn][i] = 0;
exists = 1;
break;
}
}
if (!exists) ba = 0; /* パス */
turn = !turn;
}
for (i = 1; i <= 2 * n; i++) {
if (have[1][i]) s1++;
if (have[0][i]) s2++;
}
printf("%d\n%d\n", s1, s2);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | C - カードゲーム |
| User | mikecat |
| Language | C23 (GCC 14.2.0) |
| Score | 100 |
| Code Size | 952 Byte |
| Status | AC |
| Exec Time | 1 ms |
| Memory | 1736 KiB |
Judge Result
| Set Name | set01 | set02 | set03 | set04 | set05 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 20 / 20 | 20 / 20 | 20 / 20 | 20 / 20 | 20 / 20 | ||||||||||
| Status |
|
|
|
|
|
| Set Name | Test Cases |
|---|---|
| set01 | data1 |
| set02 | data2 |
| set03 | data3 |
| set04 | data4 |
| set05 | data5 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| data1 | AC | 0 ms | 1736 KiB |
| data2 | AC | 0 ms | 1708 KiB |
| data3 | AC | 0 ms | 1680 KiB |
| data4 | AC | 0 ms | 1708 KiB |
| data5 | AC | 1 ms | 1704 KiB |