Pagini recente » Cod sursa (job #1860082) | Cod sursa (job #2631548) | Cod sursa (job #1439818) | Cod sursa (job #2854473) | Cod sursa (job #2721224)
#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 << ' ';
}