Submission #76357576


Source Code Expand

Copy
#include <stdio.h>
#include <inttypes.h>
char S[212345];
char T[64];
int64_t memo[212345][64][2];
int64_t calc(int pos, int tpos, int running) {
int64_t ans = running; /* running → */
if (T[tpos] == '\0') return 0;
if (S[pos] == '\0') return ans;
if (memo[pos][tpos][running]) return ~memo[pos][tpos][running];
/* */
if (!running) {
ans += calc(pos + 1, tpos, 0);
}
/* */
ans += calc(pos + 1, tpos + (S[pos] == T[tpos]), 1);
return ~(memo[pos][tpos][running] = ~ans);
}
int main(void) {
if (scanf("%212344s", S) != 1) return 1;
if (scanf("%63s", T) != 1) return 1;
printf("%" PRId64 "\n", calc(0, 0, 0));
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <inttypes.h>

char S[212345];
char T[64];

int64_t memo[212345][64][2];

int64_t calc(int pos, int tpos, int running) {
	int64_t ans = running; /* running → この直前までで終わるパターンを数える */
	if (T[tpos] == '\0') return 0;
	if (S[pos] == '\0') return ans;
	if (memo[pos][tpos][running]) return ~memo[pos][tpos][running];
	/* 入れない */
	if (!running) {
		ans += calc(pos + 1, tpos, 0);
	}
	/* 入れる */
	ans += calc(pos + 1, tpos + (S[pos] == T[tpos]), 1);
	return ~(memo[pos][tpos][running] = ~ans);
}

int main(void) {
	if (scanf("%212344s", S) != 1) return 1;
	if (scanf("%63s", T) != 1) return 1;
	printf("%" PRId64 "\n", calc(0, 0, 0));
	return 0;
}

Submission Info

Submission Time
Task D - No-Subsequence Substring
User mikecat
Language C23 (GCC 14.2.0)
Score 400
Code Size 745 Byte
Status AC
Exec Time 143 ms
Memory 217508 KiB

Judge Result

Set Name Sample All after_contest
Score / Max Score 0 / 0 400 / 400 0 / 0
Status
AC × 3
AC × 56
AC × 2
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_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, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt, 01_random_55.txt
after_contest 02_after_contest_56.txt, 02_after_contest_57.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 0 ms 1496 KiB
00_sample_01.txt AC 0 ms 1620 KiB
00_sample_02.txt AC 0 ms 1828 KiB
01_random_03.txt AC 72 ms 135068 KiB
01_random_04.txt AC 77 ms 142424 KiB
01_random_05.txt AC 40 ms 78500 KiB
01_random_06.txt AC 40 ms 73892 KiB
01_random_07.txt AC 58 ms 112844 KiB
01_random_08.txt AC 114 ms 217420 KiB
01_random_09.txt AC 117 ms 217500 KiB
01_random_10.txt AC 115 ms 217508 KiB
01_random_11.txt AC 119 ms 217304 KiB
01_random_12.txt AC 112 ms 217304 KiB
01_random_13.txt AC 114 ms 217420 KiB
01_random_14.txt AC 116 ms 217244 KiB
01_random_15.txt AC 116 ms 217508 KiB
01_random_16.txt AC 118 ms 217432 KiB
01_random_17.txt AC 116 ms 217384 KiB
01_random_18.txt AC 112 ms 217384 KiB
01_random_19.txt AC 119 ms 217424 KiB
01_random_20.txt AC 116 ms 217412 KiB
01_random_21.txt AC 114 ms 217508 KiB
01_random_22.txt AC 118 ms 217384 KiB
01_random_23.txt AC 118 ms 217428 KiB
01_random_24.txt AC 117 ms 217408 KiB
01_random_25.txt AC 123 ms 217508 KiB
01_random_26.txt AC 116 ms 217384 KiB
01_random_27.txt AC 115 ms 217412 KiB
01_random_28.txt AC 115 ms 217412 KiB
01_random_29.txt AC 113 ms 217500 KiB
01_random_30.txt AC 113 ms 217244 KiB
01_random_31.txt AC 113 ms 217420 KiB
01_random_32.txt AC 111 ms 217424 KiB
01_random_33.txt AC 117 ms 217384 KiB
01_random_34.txt AC 117 ms 217408 KiB
01_random_35.txt AC 117 ms 217432 KiB
01_random_36.txt AC 118 ms 217508 KiB
01_random_37.txt AC 115 ms 217412 KiB
01_random_38.txt AC 115 ms 217428 KiB
01_random_39.txt AC 115 ms 217508 KiB
01_random_40.txt AC 100 ms 195012 KiB
01_random_41.txt AC 87 ms 172868 KiB
01_random_42.txt AC 98 ms 187172 KiB
01_random_43.txt AC 34 ms 68036 KiB
01_random_44.txt AC 81 ms 158144 KiB
01_random_45.txt AC 21 ms 40516 KiB
01_random_46.txt AC 96 ms 187200 KiB
01_random_47.txt AC 52 ms 103248 KiB
01_random_48.txt AC 35 ms 68952 KiB
01_random_49.txt AC 89 ms 143172 KiB
01_random_50.txt AC 97 ms 179800 KiB
01_random_51.txt AC 142 ms 217304 KiB
01_random_52.txt AC 109 ms 217408 KiB
01_random_53.txt AC 0 ms 1616 KiB
01_random_54.txt AC 0 ms 1604 KiB
01_random_55.txt AC 0 ms 1600 KiB
02_after_contest_56.txt AC 143 ms 217412 KiB
02_after_contest_57.txt AC 110 ms 217384 KiB


2026-06-03 (Wed)
07:27:11 +09:00