Submission #65151789


Source Code Expand

Copy
#include <stdio.h>
int N, K;
char S[212345];
char S_left_max[212345], S_right_max[212345];
int left_min_cnt[212345], left_max_cnt[212345];
int right_min_cnt[212345], right_max_cnt[212345];
int main(void) {
int i;
if (scanf("%d%d", &N, &K) != 2) return 1;
if (scanf("%212344s", S) != 1) return 1;
for (i = 0; i < N; i++) {
if (S[i] == '?') {
S_left_max[i] = ".o"[(i == 0 || S_left_max[i - 1] != 'o') && S[i + 1] != 'o'];
} else {
S_left_max[i] = S[i];
}
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>

int N, K;
char S[212345];

char S_left_max[212345], S_right_max[212345];

int left_min_cnt[212345], left_max_cnt[212345];
int right_min_cnt[212345], right_max_cnt[212345];

int main(void) {
	int i;
	if (scanf("%d%d", &N, &K) != 2) return 1;
	if (scanf("%212344s", S) != 1) return 1;
	for (i = 0; i < N; i++) {
		if (S[i] == '?') {
			S_left_max[i] = ".o"[(i == 0 || S_left_max[i - 1] != 'o') && S[i + 1] != 'o'];
		} else {
			S_left_max[i] = S[i];
		}
	}
	for (i = N - 1; i >= 0; i--) {
		if (S[i] == '?') {
			S_right_max[i] = ".o"[S_right_max[i + 1] != 'o' && (i == 0 || S[i - 1] != 'o')];
		} else {
			S_right_max[i] = S[i];
		}
	}
	left_min_cnt[0] = S[0] == 'o';
	left_max_cnt[0] = S_left_max[0] == 'o';
	for (i =  1; i < N; i++) {
		left_min_cnt[i] = left_min_cnt[i - 1] + (S[i] == 'o');
		left_max_cnt[i] = left_max_cnt[i - 1] + (S_left_max[i] == 'o');
	}
	for (i = N - 1; i >= 0; i--) {
		right_min_cnt[i] = right_min_cnt[i + 1] + (S[i] == 'o');
		right_max_cnt[i] = right_max_cnt[i + 1] + (S_right_max[i] == 'o');
	}
	for (i = 0; i < N; i++) {
		if (S[i] == '?') {
			int yes = 0;
			/* . にして条件を満たせるか */
			if (
				(i == 0 ? 0 : left_min_cnt[i - 1]) + right_min_cnt[i + 1] <= K &&
				(i == 0 ? 0 : left_max_cnt[i - 1]) + right_max_cnt[i + 1] >= K
			) {
				yes |= 1;
			}
			/* o にして条件を満たせるか */
			if (
				(i == 0 || S[i - 1] != 'o') &&
				S[i + 1] != 'o' &&
				(i <= 1 ? 0 : left_min_cnt[i - 2]) + 1 + right_min_cnt[i + 2] <= K &&
				(i <= 1 ? 0 : left_max_cnt[i - 2]) + 1 + right_max_cnt[i + 2] >= K
			) {
				yes |= 2;
			}
			/* 結果を出力する */
			putchar("!.o?"[yes]);
		} else {
			putchar(S[i]);
		}
	}
	putchar('\n');
	return 0;
}

Submission Info

Submission Time
Task D - Logical Filling
User mikecat
Language C (gcc 12.2.0)
Score 400
Code Size 1796 Byte
Status AC
Exec Time 7 ms
Memory 5376 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 43
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_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 1624 KB
00_sample_01.txt AC 1 ms 1576 KB
00_sample_02.txt AC 1 ms 1664 KB
01_random_00.txt AC 2 ms 2784 KB
01_random_01.txt AC 6 ms 5224 KB
01_random_02.txt AC 7 ms 5032 KB
01_random_03.txt AC 1 ms 1580 KB
01_random_04.txt AC 3 ms 3068 KB
01_random_05.txt AC 3 ms 3232 KB
01_random_06.txt AC 5 ms 4348 KB
01_random_07.txt AC 5 ms 4244 KB
01_random_08.txt AC 1 ms 1748 KB
01_random_09.txt AC 5 ms 4280 KB
01_random_10.txt AC 5 ms 5300 KB
01_random_11.txt AC 5 ms 5336 KB
01_random_12.txt AC 5 ms 5288 KB
01_random_13.txt AC 5 ms 5336 KB
01_random_14.txt AC 4 ms 5376 KB
01_random_15.txt AC 4 ms 5236 KB
01_random_16.txt AC 4 ms 5336 KB
01_random_17.txt AC 4 ms 5240 KB
01_random_18.txt AC 4 ms 5276 KB
01_random_19.txt AC 5 ms 5292 KB
01_random_20.txt AC 5 ms 5184 KB
01_random_21.txt AC 4 ms 5252 KB
01_random_22.txt AC 4 ms 5184 KB
01_random_23.txt AC 1 ms 1624 KB
01_random_24.txt AC 1 ms 1628 KB
01_random_25.txt AC 1 ms 1628 KB
01_random_26.txt AC 1 ms 1620 KB
01_random_27.txt AC 6 ms 5316 KB
01_random_28.txt AC 6 ms 5332 KB
01_random_29.txt AC 6 ms 5232 KB
01_random_30.txt AC 5 ms 5248 KB
01_random_31.txt AC 6 ms 5300 KB
01_random_32.txt AC 6 ms 5272 KB
01_random_33.txt AC 5 ms 5332 KB
01_random_34.txt AC 5 ms 5324 KB
01_random_35.txt AC 6 ms 5300 KB
01_random_36.txt AC 6 ms 5276 KB
01_random_37.txt AC 5 ms 5312 KB
01_random_38.txt AC 5 ms 5252 KB
01_random_39.txt AC 5 ms 5316 KB


2025-04-24 (Thu)
07:47:12 +09:00