Submission #76751560
Source Code Expand
Copy
#include <stdio.h>#define MOD_BY 998244353int add(int a, int b) {return a + b - MOD_BY * (a + b >= MOD_BY);}char S[312345];int memo[312345][4];int calc(int pos, int prev) {int id = S[pos] - 'a';int ans = 0;if (id < 0 || 2 < id) return prev != 3;if (memo[pos][prev]) return ~memo[pos][prev];/* 入れない */ans = add(ans, calc(pos + 1, prev));/* 入れる */if (id != prev) ans = add(ans, calc(pos + 1, id));return ~(memo[pos][prev] = ~ans);}int main(void) {if (fgets(S, sizeof(S), stdin) == NULL) return 1;printf("%d\n", calc(0, 3));return 0;}
#include <stdio.h>
#define MOD_BY 998244353
int add(int a, int b) {
return a + b - MOD_BY * (a + b >= MOD_BY);
}
char S[312345];
int memo[312345][4];
int calc(int pos, int prev) {
int id = S[pos] - 'a';
int ans = 0;
if (id < 0 || 2 < id) return prev != 3;
if (memo[pos][prev]) return ~memo[pos][prev];
/* 入れない */
ans = add(ans, calc(pos + 1, prev));
/* 入れる */
if (id != prev) ans = add(ans, calc(pos + 1, id));
return ~(memo[pos][prev] = ~ans);
}
int main(void) {
if (fgets(S, sizeof(S), stdin) == NULL) return 1;
printf("%d\n", calc(0, 3));
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Not Adjacent 2 |
| User | mikecat |
| Language | C23 (GCC 14.2.0) |
| Score | 400 |
| Code Size | 620 Byte |
| Status | AC |
| Exec Time | 18 ms |
| Memory | 29992 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 400 / 400 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt |
| All | min.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, sample_01.txt, sample_02.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| min.txt | AC | 0 ms | 1512 KiB |
| random_01.txt | AC | 17 ms | 29828 KiB |
| random_02.txt | AC | 13 ms | 23080 KiB |
| random_03.txt | AC | 17 ms | 29888 KiB |
| random_04.txt | AC | 7 ms | 12428 KiB |
| random_05.txt | AC | 16 ms | 29892 KiB |
| random_06.txt | AC | 6 ms | 11700 KiB |
| random_07.txt | AC | 17 ms | 29828 KiB |
| random_08.txt | AC | 6 ms | 10932 KiB |
| random_09.txt | AC | 17 ms | 29828 KiB |
| random_10.txt | AC | 14 ms | 23948 KiB |
| random_11.txt | AC | 17 ms | 29992 KiB |
| random_12.txt | AC | 2 ms | 3560 KiB |
| random_13.txt | AC | 18 ms | 29892 KiB |
| random_14.txt | AC | 13 ms | 22636 KiB |
| random_15.txt | AC | 17 ms | 29856 KiB |
| random_16.txt | AC | 6 ms | 11424 KiB |
| random_17.txt | AC | 17 ms | 29932 KiB |
| random_18.txt | AC | 11 ms | 20020 KiB |
| random_19.txt | AC | 16 ms | 29828 KiB |
| random_20.txt | AC | 4 ms | 7860 KiB |
| random_21.txt | AC | 16 ms | 29856 KiB |
| random_22.txt | AC | 10 ms | 19380 KiB |
| random_23.txt | AC | 15 ms | 29992 KiB |
| random_24.txt | AC | 3 ms | 6176 KiB |
| random_25.txt | AC | 12 ms | 29828 KiB |
| sample_01.txt | AC | 0 ms | 1512 KiB |
| sample_02.txt | AC | 0 ms | 1460 KiB |