Cod sursa(job #1520314)

Utilizator dragos000Cojanu Dragos dragos000 Data 8 noiembrie 2015 16:36:09
Problema Potrivirea sirurilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <cstring>
#include <fstream>

using namespace std;

char a[100],b[100];
int n,m,pi[100];
void citire()
{
    ifstream f("nr.in");
    f.getline(a,100);f.getline(b,100);
    f.close();
    n=strlen(a);
    m=strlen(b);
}

void prefix()
{
    int q=0,i;

    for (i=2;i<=m;i++)
    {
        while (q>0&&b[q]!= b[i])
            q=pi[q-1];
        if (b[q]==b[i])
            q++;
        pi[i] = q;
    }
}

void fct()
{

    int q=0;

    for(int i=1;i<=n;i++)
        {
        while(q>0 && b[q]!=a[i])
        q=pi[q-1];

        if(b[q]==a[i]) q++;
        if(q==m)
        {
        q=pi[q];
        cout<<i-m<<" ";
        }
        }

}



int main()
{
    citire();
    prefix();
    fct();
    return 0;
}