#include #include int K, M, L; char milostny[310000]; char zmokly[310000]; int main() { scanf("%s ", milostny); M = strlen(milostny); scanf("%d", &K); // Pro každý z K zmoklých dopisů ověříme, zda je podposloupností // milostného dopisu for (int d = 0; d < K; d++) { scanf("%s ", zmokly); int zarazka = 0; for (int k = 0; zmokly[k] != '\0'; k++) { while (milostny[zarazka] != zmokly[k] && zarazka < M) zarazka++; // V popisu autorkského řešení si ještě uložíme pozici // zarážky jako k-tý prvek posloupnosti indexů. // Ve skutečnosti však tuto posloupnost k ničemu // jinému než důkazu správnosti nepotřebujeme. if (zarazka == M) goto SPATNY; zarazka++; } printf("ANO\n"); continue; SPATNY: printf("NE\n"); } }