Pagini recente » Cod sursa (job #263317) | Cod sursa (job #315573) | Cod sursa (job #893769) | Cod sursa (job #2816913) | Cod sursa (job #2909798)
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define pf push_front
#define MOD 1000000007
#define MAX 2000005
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int main()
{
vector < int > raspuns;
string s1, s2;
int n, m, i, k, p[MAX+MAX];
fin >> s1 >> s2, n = s1.size(), m = s2.size();
if(n > m) fout << 0;
else
{
s1 += '#';
s1 += s2;
p[0] = -1;
for(i = 1; i <= n + m; i++)
{
k = p[i-1];
while(k >= 0 && s1[k] != s1[i-1]) k = p[k];
p[i] = k + 1;
if(p[i] == n && raspuns.size() < 1000) raspuns.pb(i - n - n - 1);
}
fout << raspuns.size() << '\n';
for(auto it:raspuns) fout << it << ' ';
}
return 0;
}