Cod sursa(job #3195316)

Utilizator popuPop Matei Tudor popu Data 20 ianuarie 2024 14:12:08
Problema Potrivirea sirurilor Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("strmatch.in");
ofstream fout("strmatch.out");

string a,b;
long long n,m,c,coda,codb,v[2000000];

void prelCod()
{
    for(int i=0;i<n;++i)
        coda+=a[i]-'A'+1,codb+=b[i]-'A'+1;
}

bool verif(int i)
{
    int p=0;
    while(p<n)
    {
        if(a[p]!=b[i])
            return 0;
        ++p;
        ++i;
    }
    return 1;
}

int main()
{
    fin>>a>>b;
    n=a.length();
    m=b.length();
    if(m<n)
    {
        fout<<0;
    }
    else
    {
    prelCod();
    for(int i=0;i<=m-n;++i)
    {
        if(coda==codb && verif(i))
        {
            ++c;
            if(c<=1000)
                v[c]=i;
        }
        codb=codb-(b[i]-'A'+1)+(b[i+n]-'A'+1);
    }
    fout<<c<<'\n';
    for(int i=1;i<=c && i<=1000;++i)
        fout<<v[i]<<' ';
    }
    return 0;
}