Cod sursa(job #2721224)

Utilizator KPP17Popescu Paul KPP17 Data 11 martie 2021 17:29:52
Problema Potrivirea sirurilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.54 kb
#include <fstream>
#define mF "strmatch"
std::ifstream in(mF ".in");
std::ofstream out(mF ".out");
constexpr int N = 2000001; char A[N], B[N]; int C[N];
#include <vector>
int main()
{
    in >> A >> B; for (int i = 0, j = 1; A[j]; j++)
        if (A[i] == A[j]) C[j] = ++i; else if (i) i = C[i-1], j--;
    std::vector<int> V; for (int i = 0, j = 0; B[j]; j++)
        if (A[i] == B[j]) if (not A[++i]) V.push_back(j - i + 1); else;
        else if (i) i = C[i-1], j--;
    out << V.size() << '\n'; for (int i: V) out << i << ' ';
}