Pagini recente » Cod sursa (job #1340010) | Cod sursa (job #2440062) | Cod sursa (job #1370587) | Cod sursa (job #3169283) | Cod sursa (job #3163457)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
vector < int > sol;
int main()
{
string a, b;
cin >> a >> b;
int len = a.size(), cnt = 0;
a += '#';
a += b;
vector < int > pi(a.size());
pi[0] = 0;
int k = 0;
for(int i = 1; i < a.size(); i++)
{
while(k != 0 && a[k] != a[i])
k = pi[k - 1];
if(a[k] == a[i])
k++;
pi[i] = k;
if(k == len)
{
cnt++;
if(cnt <= 1000 && i > len)
sol.push_back(i - 2 * len);
}
}
cout << cnt << '\n';
for(int i = 0; i < sol.size(); i++)
cout << sol[i] << " ";
/*cout << '\n';
for(int i = 0; i < a.size(); i++)
cout << pi[i] << " ";
cout << '\n';
for(int i = 0; i < a.size(); i++)
cout << a[i] << " ";*/
return 0;
}