Cod sursa(job #921686)

Utilizator VladMSBonta vlad valentin VladMS Data 21 martie 2013 10:51:14
Problema Potrivirea sirurilor Scor 14
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <cstring>
#define NMAX 2000001
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int i,j,n1,n2,rez[NMAX],k,ok;
char s1[NMAX],s2[NMAX];
int main()
{
    fin.get(s2,NMAX);
    fin.get();
    fin.get(s1,NMAX);
    n1=strlen(s1);
    n2=strlen(s2);
    i=0;
    j=-1;
    if(n2>n1)
        fout<<0<<'\n';
        else
        {
    while(i<=n1)
    {
        ok=0;
        if(j>=0&&s1[i]!=s2[j+1])
            {j=-1;ok=1;}
        if(s1[i]==s2[j+1])
            j++;
        if(j+1==n2)
            {rez[++k]=i-j;ok=1;j=-1;}
        i++;
        if(ok==1)
            i--;
    }
    fout<<k<<'\n';
    for(i=1;i<=k;++i)
        fout<<rez[i]<<" ";
        }
    return 0;
}