Pagini recente » Cod sursa (job #291532) | Cod sursa (job #2803924) | Cod sursa (job #204381) | Cod sursa (job #59190) | Cod sursa (job #3138915)
#include <bits/stdc++.h>
using namespace std;
using llx = long long;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
string a, b;
vector<int> p, rasp;
int main()
{
int n, m, i, j, nr_rasp = 0;
fin >> a >> b;
n = a.size(), m = b.size();
a = a + "#" + b;
p.resize(n+m+1);
p[0] = 0;
for (i = 1; i<=n+m; i++)
{
j = p[i-1];
while (j > 0 && a[i] != a[j])
j = p[j-1];
if (a[i] == a[j])
j++;
p[i] = j;
if (p[i] == n)
{
nr_rasp++;
if (rasp.size() < 1000)
rasp.push_back(i-2*n);
}
}
fout << nr_rasp << '\n';
for (const auto &el : rasp)
fout << el << ' ';
return 0;
}