Cod sursa(job #2987724)

Utilizator danyyyDaniel danyyy Data 2 martie 2023 18:46:19
Problema Potrivirea sirurilor Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
char s1[2000001],s2[2000001];
int v[2000001],sol[1001];
int main()
{
   int i,j=0,l1,l2,cons=0;
   fin>>s1;
   l1=strlen(s1);
   for(i=1;i<l1;i++)
   {
       if(s1[i]==s1[j])
       {
           cons++;
           j++;
           v[i]=cons;
       }
       else if(j!=0)
       {
           cons=0;
           j=0;
           i--;
       }
   }
   fin>>s2;
   cons=0;
   l2=strlen(s2);
   j=-1;
   for(i=0;i<l2;i++)
   {
     if(s1[j+1]==s2[i])
        j++;
     else if(j!=-1)
     {
         i--;
         if(v[j]!=0)
         j=v[j];
         else j=-1;
     }
     if(j==l1-1)
     {
         cons++;
         if(cons<=1000)
         sol[cons]=i-j;
         i=i-j;
         j=-1;
     }
   }
   fout<<cons<<'\n';
   if(cons>1000)cons=1000;
   for(i=1;i<=cons;i++)fout<<sol[i]<< ' ';
}