Cod sursa(job #1928236)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 15 martie 2017 22:56:38
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
ofstream fout("x.txt");
char x[2000002];
char y[2000002];
int pi[2000002];
int main()
{int i,k,nr=0;
f>>x+1;
f>>y+1;
pi[1]=0;
k=0;
for(i=2;x[i];i++)
{
    while(k>0 and x[i]!=x[k+1])
        k=pi[k];
    if(x[i]==x[k+1]) k++;
    pi[i]=k;
}
k=0;
int n=strlen(x+1);
for(i=1;y[i];i++)
{
    while(k>0 and y[i]!=x[k+1])
        k=pi[k];
    if(y[i]==x[k+1]) k++;
    if(k==n) {nr++; if(nr<1000) fout<<i<<' ';}
}
g<<nr<<'\n';
fout.close();
ifstream fin("x.txt");
while(fin>>i)
g<<i-n<<' ';

    return 0;
}