@manjaro ja równieź zrobiłem to w jednej pętli i zaliczyłem kod z czasem 0.20 (z wyłączoną synchronizacją IO C z C++ itp.). Wstaw do kodu:
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
Jeżeli dalej przekraczasz czas to coś jest nie tak w kodzie. Wydaje mi się, że niepotrzebnie używasz std::string::substr. Mój sposób (w funkcji):
- Biorę pierwszy znak szukanego ciągu.
- Jeżeli nie znalazł się w wyrażeniu zwracam false.
- Jeżeli znalazł się ustawiam iterator dla wyrażenia o 1 za znalezioną pozycją
- Dla kolejnych znaków szukam od zapisanej pozycji…
- Jeżeli pętla się skończy zwracam true.