Pagini recente » Cod sursa (job #851234) | Cod sursa (job #934551) | Cod sursa (job #632233) | ONIS 2014, Clasament Runda 1 | Cod sursa (job #1405406)
#include <fstream>
#include <cstring>
#define DIM 201
using namespace std;
int l, l1, k, poz;
char s[DIM], p[DIM];
int pi[DIM], v[1005];
int main()
{
ifstream in("strmatch.in");
ofstream out("strmatch.out");
in.get(p+1, DIM);
in.get();
in.get(s+1, DIM);
p[0]=' ';
s[0]=' ';
l=strlen(p)-1;
pi[0]=0;
k=0;
for(int i=2; i<=l; ++i){
while(k&&p[k+1]!=p[i])
k=pi[k];
if(p[k+1]==p[i])
k++;
pi[i]=k;
}
l1=strlen(s)-1;
k=0;
for(int i=1; i<=l1; ++i){
while(k&&s[i]!=p[k+1])
k=pi[k];
if(s[i]==p[k+1])
k++;
if(k==l){
poz++;
if(poz<=1000)
v[poz]=i;
k=pi[k];
}
}
out<<poz<<"\n";
for(int i=1; i<=poz&&i<=100; ++i){
out<<v[i]-l<<" ";
}
in.close();
out.close();
return 0;
}