Pagini recente » Cod sursa (job #35910) | Cod sursa (job #2560960) | Cod sursa (job #9915) | Cod sursa (job #3227396) | Cod sursa (job #2714332)
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
string a, b;
int c[2000004], l, v[2000004], cnt=0;
int main()
{
fin >> a >> b;
for (int i = 1; i < a.size(); i++)
{
while (a[l] != a[i] && l != 0)
{
l = c[l - 1];
}
if (a[l] == a[i])
{
l++;
}
c[i] = l;
}
l = 0;
for (int i=0; i<b.size(); i++)
{
while (a[l] != b[i] && l != 0)
{
l = c[l - 1];
}
if (a[l] == b[i])
{
l++;
}
if (l == a.size())
{
cnt++;
v[cnt] = i - a.size() + 1;
l = c[l-1];
}
}
fout << cnt << endl;
if (cnt > 1000) cnt = 1000;
for (int i = 1; i <= cnt; i++)
{
fout << v[i] << " ";
}
}