Pagini recente » Cod sursa (job #1083803) | Cod sursa (job #2870816) | Cod sursa (job #1617677) | Cod sursa (job #2643091) | Cod sursa (job #927075)
Cod sursa(job #927075)
#include <fstream>
#include <string>
using namespace std;
ifstream f("strmatch.in"); ofstream g("strmatch.out");
int x, y, i, j, n, m, l, t;
int r[1005];
string a, b;
int pa[2000005];
int main(){
f>>b>>a;
n = a.length();
m = b.length();
l=0;
for (i=1; i<m; i++){
while (l){
if (b[l]==b[i]) break;
l=pa[l-1];
}
if (b[l]==b[i]){
pa[i]=++l;
}
}
l=0;
for (i=0; i<n; i++){
if (l==m){
t++;
if (t<=1000) r[t] = i-m;
}
while (l){
if (a[i]==b[l]) break;
l=pa[l-1];
}
if (a[i]==b[l]) l++;
}
if (l==m && t<1000){
r[++t] = i-m;
}
g<<t<<"\n";
for (i=1; i<=t && i<=1000; i++){
g<<r[i]<<" ";
}
/*
for (i=0; i<m; i++){
g<<pa[i]<<" ";
}
*/
}