Cod sursa(job #3237921)
| Utilizator | Data | 14 iulie 2024 12:40:42 | |
|---|---|---|---|
| Problema | Potrivirea sirurilor | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.6 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int i, n, m, k, p[4000005], r, q;
string s1, s2, s;
int main()
{
fin>>s1>>s2;
n=s1.size();
m=s2.size();
s=s1+'#'+s2;
p[0]=-1;
for (i=1; i<=n+m+1; i++) {
k=p[i-1];
while (k>=0 && s[k]!=s[i-1]) k=p[k];
p[i]=k+1;
if (p[i]==n) {q++;}
}
fout<<q<<'\n';
for (i=2*n; i<=n+m+1; i++) {
if (p[i]==n) {
r++;
if (r==1001) break;
fout<<i-2*n-1<<' ';
}
}
return 0;
}
