Cod sursa(job #991143)

Utilizator robertstrecheStreche Robert robertstreche Data 29 august 2013 20:47:24
Problema Potrivirea sirurilor Scor 26
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

ifstream f("strmatch.in");
ofstream g("strmatch.out");
char a[200000],b[200000];
long long i,j,k,n1,n2,nr,p,ok,d[200000];
int main()
{
    while (a[n1]!='\n')
    {   n1++;
        f>>noskipws>>a[n1];
    }
    n1--;
    while (b[n2]!='\n')
    {   n2++;
        f>>noskipws>>b[n2];
    }
    n2--;
    for (i=1;i<=n2;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)i=p-1;
            else
            i+=n1-2;
        }
    }
    g<<nr<<'\n';
    for(i=1;i<=nr;i++)g<<d[i]<<" ";
    f.close();
    g.close();
}