Cod sursa(job #3333243)

Utilizator carjila_raresCarjila Alexandru Rares carjila_rares Data 12 ianuarie 2026 14:42:43
Problema Potrivirea sirurilor Scor 16
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
///strmatch
#include <bits/stdc++.h>;
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int main()
{
    int pot[10000],a[1000],b[1000],n,m,i,pp[1000],mod=10663,p=1327;
    char a1[1000],b1[1000];
    f.getline(b1,1000);
    f.getline(a1,1000);
    m=strlen(b1);
    n=strlen(a1);
    for(i=0;i<n;i++)
       a[i+1]=a1[i]-'A'+1;
    for(i=0;i<m;i++)
        b[i+1]=b1[i]-'A'+1;
    int poz=0,nr=0,sa,sb,s[1000];
    pp[0]=1;
    for(i=1;i<=m;i++)
        pp[i]=(pp[i-1]*p)%mod;
    sb=b[1];
    for(i=2;i<=m;i++)
        sb=(sb*p+b[i])%mod;
    s[1]=a[1];
    for(i=2;i<=n;i++)
        s[i]=(s[i-1]*p+a[i])%mod;
    for(i=1;i<=n-m+1;i++)
    {
        sa=(s[i+m-1]-(s[i-1]*pp[m])%mod+mod)%mod;
        if(sa==sb)
        {
            nr++;
            pot[nr]=i;
        }
    }
    g<<nr<<endl;
    for(i=1;i<=nr;i++)
        g<<pot[i]-1<<" ";
    f.close();
    g.close();
    return 0;
}