Cod sursa(job #2542013)

Utilizator MartaMerticariuMerticariu Marta-Denisa MartaMerticariu Data 9 februarie 2020 12:36:55
Problema Potrivirea sirurilor Scor 14
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include<fstream>
#include<string.h>
using namespace std;
int n,m;
ifstream in("strmatch.in");
ofstream out("strmatch.out");
int main()
{
    char urm[100];
    char P[100];
    char T[1000];
    int k,q,i;
	int s[100];
	int v=0;
    in.getline(P,100);
    m=strlen(P);
    in.getline(T,100);
    n=strlen(T);
    urm[0]=-1;
    k=-1;
    for(q=1;q<m;q++){
        while(k>=0&&P[k+1]!=P[q]) k=urm[k];
        if(P[k+1]==P[q])k++;
        urm[q]=k;
    }
    k=-1;
    for(q=0;q<n;q++){
        while(k>=0&&P[k+1]!=T[q])k=urm[k];
        if(P[k+1]==T[q])k++;
        if(k==m-1){
            s[v++]=q-k;
            k=urm[k];
        }
    }
	out<<v<<endl;
	for(i=0;i<v;i++)out<<s[i]<<" ";
}