Pagini recente » Cod sursa (job #2190342) | Cod sursa (job #1274807) | Cod sursa (job #1347697) | Cod sursa (job #2105608) | Cod sursa (job #2701963)
#include <fstream>
#include <string>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
string a, b;
int p[4000001];
int main()
{
int i, j, n, nr = 0;
fin >> a >> b;
n = a.size();
a += '#';
a += b;
for (i = 1; i<a.size(); 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++;
}
fout << nr << '\n';
nr = min(nr, 1000);
for (i = n+1; i<a.size() && nr > 0; i++)
if (p[i] == n)
{
fout << i - 2*n << ' ';
nr--;
}
return 0;
}