Cod sursa(job #3199726)

Utilizator theo_aldescuTheodora Aldescu theo_aldescu Data 2 februarie 2024 16:18:45
Problema Potrivirea sirurilor Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
long long p[2000005],v[2000005],hash2[2000005],sira,k,i,s,j,nr,ptr=37;
char a[2000005],b[2000005];
const long long mod=1e9+13;
int main()
{f>>a>>b;
int l1=strlen(a);
int l2=strlen(b);
p[0]=1;
for(i=1;i<=l1;i++)
    sira=(sira*ptr+(int)a[i-1])%mod;
hash2[0]=0;
for(i=1;i<=l2;i++)
    {hash2[i]=(hash2[i-1]*ptr+(int)b[i-1])%mod;
    p[i]=(p[i-1]*ptr)%mod;
    }
for(i=0;i<l2-l1+1;i++)
    {j=i+l1-1;
    s=((hash2[j+1]-hash2[i]*p[j-i+1])%mod+mod)%mod;
    if(s==sira)v[++k]=i;
    }
g<<k<<'\n';
if(k>1000)k=1000;
for(i=1;i<=k;i++)g<<v[i]<<" ";
return 0;
}