Cod sursa(job #991856)

Utilizator robertstrecheStreche Robert robertstreche Data 31 august 2013 17:11:36
Problema Potrivirea sirurilor Scor 26
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <cstring>
using namespace std;

ifstream f("strmatch.in");
ofstream g("strmatch.out");
char a[300000],b[300000];
long long i,j,k,n1,n2,nr,p,ok,d[200000];
int main()
{
   f.getline(a+1,2000001);
    f.getline(b+1,2000001);
    a[0]=b[0]=' ';

    n1=strlen(a)-1;
    n2=strlen(b)-1;

    for (i=1;i<=n2-n1+1;i++)
    {
        if (b[i]==a[1])
        {   ok=1;
            p=0;
            for (j=2;j<=n1;j++)
             {
                 if (b[i+j-1]==a[1] && p==0)
                  p=i+j-1;
                 if (a[j]!=b[i+j-1])
                   {
                       ok=0;
                       break;
                    }
             }
            if(ok){nr++;d[nr]=i-1;}
            if (p!=0)i=p-1;
            else
            i+=n1-1;
        }
    }
    g<<nr<<'\n';
    for(i=1;i<=nr;i++)g<<d[i]<<" ";
    f.close();
    g.close();
}