Pagini recente » Cod sursa (job #3244412) | Cod sursa (job #1941084) | Cod sursa (job #2722413) | Cod sursa (job #2252665) | Cod sursa (job #3155205)
#include <fstream>
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
const int NMAX = 2e6;
string a, b;
int LPS[2 * NMAX + 1];
int Answer[1001], ind;
int secvente;
int main()
{
cin >> a >> b;
int n = a.size();
int m = b.size();
a = a + "#" + b;
LPS[0] = 0;
for(int i = 1; i < a.size(); i++)
{
int j = LPS[i - 1];
while(j > 0 && a[j] != a[i])
j = LPS[j - 1];
if(a[j] == a[i])
j++;
LPS[i] = j;
if(LPS[i] == n && ind < 1000)
{
secvente++;
Answer[++ind] = i - 2 * n;
}
}
cout << secvente << '\n';
for(int i = 1; i <= ind; i++)
cout << Answer[i] << ' ';
return 0;
}