Submission #68173016
Source Code Expand
Copy
#include <stdio.h>int N, M;char S[1123456];char T[1123456];int main(void) {int i;int cnts[10] = {0};int cur, last_ok = 0;if (scanf("%d%d", &N, &M) != 2) return 1;if (scanf("%1123455s", S) != 1) return 1;if (scanf("%1123455s", T) != 1) return 1;#if 0if (N < 1 || 1000000 < N || M < 1 || 1000000 < M) return 42;if (S[N] != '\0' || T[M] != '\0') return 42;for (i = 0; i < N; i++) {if (S[i] < '1' || '9' < S[i]) return 42;}for (i = 0; i < M; i++) {
#include <stdio.h>
int N, M;
char S[1123456];
char T[1123456];
int main(void) {
int i;
int cnts[10] = {0};
int cur, last_ok = 0;
if (scanf("%d%d", &N, &M) != 2) return 1;
if (scanf("%1123455s", S) != 1) return 1;
if (scanf("%1123455s", T) != 1) return 1;
#if 0
if (N < 1 || 1000000 < N || M < 1 || 1000000 < M) return 42;
if (S[N] != '\0' || T[M] != '\0') return 42;
for (i = 0; i < N; i++) {
if (S[i] < '1' || '9' < S[i]) return 42;
}
for (i = 0; i < M; i++) {
if (T[i] < '1' || '9' < T[i]) return 42;
}
#endif
for (i = 0; i < M; i++) {
int idx = T[i] - '0';
if (0 <= idx && idx < 10) cnts[idx]++;
}
cur = 9;
for (i = 0; i < N; i++) {
while (cur >= 0 && cnts[cur] == 0) cur--;
if (cur < 0) break;
/* cur は、在庫がある最大の数字 */
if (S[i] - '0' < cur) {
/* 書き換えたほうが有利になる */
S[i] = cur + '0';
cnts[cur]--;
}
/* 最後の数字を消化できた? */
last_ok = last_ok || S[i] == T[M - 1];
}
/* 最後の数字を消化できなかった */
if (!last_ok) S[N - 1] = T[M - 1];
puts(S);
return 0;
}
/*
とにかく上位をつよくした方がつよい
最後の数字以外は捨てることができる (最後の数字を書くところに書けばいいので)
最後の数字以外の在庫をカウント
上位から見て、在庫がある数字で一番つよいやつを置く
ただし、それよりも既存の数字のほうがつよければスキップする
最後の数字と同じ数字を使おうとしたら、最後の数字を消化できる
最後まで最後の数字が残っていたら、それはクソザコなので、仕方ないから最下位に書いておく
*/
Submission Info
| Submission Time | |
|---|---|
| Task | A - Replace Digits |
| User | mikecat |
| Language | C (gcc 12.2.0) |
| Score | 400 |
| Code Size | 1762 Byte |
| Status | AC |
| Exec Time | 10 ms |
| Memory | 3612 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 400 / 400 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 01_handmade_06.txt, 01_handmade_07.txt, 01_handmade_08.txt, 01_handmade_09.txt, 02_corner_00.txt, 02_corner_01.txt, 02_corner_02.txt, 02_corner_03.txt, 02_corner_04.txt, 02_corner_05.txt, 02_corner_06.txt, 02_corner_07.txt, 02_corner_08.txt, 03_random_00.txt, 03_random_01.txt, 03_random_02.txt, 03_random_03.txt, 03_random_04.txt, 03_random_05.txt, 03_random_06.txt, 03_random_07.txt, 03_random_08.txt, 03_random_09.txt, 03_random_10.txt, 04_max_00.txt, 04_max_01.txt, 04_max_02.txt, 04_max_03.txt, 04_max_04.txt, 04_max_05.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 0 ms | 1624 KiB |
| 00_sample_01.txt | AC | 0 ms | 1588 KiB |
| 00_sample_02.txt | AC | 0 ms | 1616 KiB |
| 01_handmade_00.txt | AC | 0 ms | 1584 KiB |
| 01_handmade_01.txt | AC | 0 ms | 1612 KiB |
| 01_handmade_02.txt | AC | 4 ms | 2424 KiB |
| 01_handmade_03.txt | AC | 4 ms | 2492 KiB |
| 01_handmade_04.txt | AC | 3 ms | 2596 KiB |
| 01_handmade_05.txt | AC | 8 ms | 3552 KiB |
| 01_handmade_06.txt | AC | 8 ms | 3524 KiB |
| 01_handmade_07.txt | AC | 8 ms | 3400 KiB |
| 01_handmade_08.txt | AC | 9 ms | 3552 KiB |
| 01_handmade_09.txt | AC | 8 ms | 3472 KiB |
| 02_corner_00.txt | AC | 3 ms | 2208 KiB |
| 02_corner_01.txt | AC | 4 ms | 2452 KiB |
| 02_corner_02.txt | AC | 4 ms | 2312 KiB |
| 02_corner_03.txt | AC | 2 ms | 2088 KiB |
| 02_corner_04.txt | AC | 7 ms | 3392 KiB |
| 02_corner_05.txt | AC | 3 ms | 2340 KiB |
| 02_corner_06.txt | AC | 6 ms | 3184 KiB |
| 02_corner_07.txt | AC | 4 ms | 2484 KiB |
| 02_corner_08.txt | AC | 3 ms | 2140 KiB |
| 03_random_00.txt | AC | 3 ms | 2520 KiB |
| 03_random_01.txt | AC | 1 ms | 1684 KiB |
| 03_random_02.txt | AC | 3 ms | 2488 KiB |
| 03_random_03.txt | AC | 2 ms | 1904 KiB |
| 03_random_04.txt | AC | 2 ms | 2240 KiB |
| 03_random_05.txt | AC | 3 ms | 2204 KiB |
| 03_random_06.txt | AC | 7 ms | 2880 KiB |
| 03_random_07.txt | AC | 6 ms | 2636 KiB |
| 03_random_08.txt | AC | 3 ms | 2168 KiB |
| 03_random_09.txt | AC | 2 ms | 1688 KiB |
| 03_random_10.txt | AC | 3 ms | 2596 KiB |
| 04_max_00.txt | AC | 10 ms | 3556 KiB |
| 04_max_01.txt | AC | 10 ms | 3544 KiB |
| 04_max_02.txt | AC | 10 ms | 3612 KiB |
| 04_max_03.txt | AC | 10 ms | 3496 KiB |
| 04_max_04.txt | AC | 10 ms | 3396 KiB |
| 04_max_05.txt | AC | 8 ms | 3524 KiB |