Cod sursa(job #1060102)

Utilizator SapientiaCHIRILA ADRIAN Sapientia Data 17 decembrie 2013 16:28:14
Problema Potrivirea sirurilor Scor 14
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <string.h>
#include <fstream>
#define Nmax 2000009
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
char t[Nmax],p[Nmax];
int v[Nmax];
int i=-1,n,m,j,poz,k=0;
int main()
{
    f.getline(p,Nmax);
    f.getline(t,Nmax);
    n=strlen(t)-1;
    m=strlen(p)-1;
    bool start=0;
    do
    {
        ++i;
        if ((t[i]==p[0]) && (!start))
        {
           start=true;
           j=1;
           poz=i;
        }
        else if ((start) && (t[i]==p[j]))
        {
            if (j==m) {++k;v[k]=poz;start=false;--i;}
            else ++j;
        }
        else if ((start) && (t[i]!=p[j])) {start=false;--i;}
    }
    while(i<n-m+1);
    g<<k<<"\n";
    for(i=1;i<=k;++i)
     g<<v[i]<<" ";
    return 0;
}