Cod sursa(job #2017858)

Utilizator Johnny07Savu Ioan-Daniel Johnny07 Data 2 septembrie 2017 19:53:01
Problema Potrivirea sirurilor Scor 16
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
char a[2000010],b[2000010];
int n1,n2,fr[200],integer,c[2000010],aux,i,solve[1001],poz;
int main()
{
    for (i=1;i<=199;i++) fr[i]=-1;
f.getline (a,2000010);
f.getline (b,2000010);
n1=strlen (a)-1;
n2=strlen (b)-1;
for (i=1;i<=n1;i++)
{
    aux=c[i-1];
    if (a[i]==a[aux]) {c[i]=c[i-1]+1;}
}

poz=0;
int countdown=0;

int i=-1;
for (i=0;i<=n2;i++)
{
if (b[i]==a[poz]) {poz++; if (poz>n1) {poz=c[poz-1]; countdown++; if (countdown<=1000) {solve[countdown]=i-n1;} }  }
else poz=c[poz];
}
g<<countdown<<"\n";
for (i=1;i<=min(countdown,1000);i++) g<<solve[i]<<" ";

    return 0;
}