Cod sursa(job #2998576)

Utilizator MihiBluBalau Mihai MihiBlu Data 9 martie 2023 18:51:57
Problema Potrivirea sirurilor Scor 38
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <cstring>
using namespace std;

ifstream f("strmatch.in");
ofstream g("strmatch.out");

int n, m, l, v[2000001];
char a[2000001], b[2000001];

bool ok1(int x)
{
    for(int i=0; i<m; i++)
        if(a[x+i]!=b[i])
            return 0;
    return 1;
}

void parc1()
{
    for(int i=0; i<n-m; i++)
        if(ok1(i))
            v[++l]=i;
}

bool ok2(int x)
{
    for(int i=0; i<n; i++)
        if(b[x+i]!=a[i])
            return 0;
    return 1;
}

void parc2()
{
    for(int i=0; i<m-n; i++)
        if(ok2(i))
            v[++l]=i;
}

int main()
{
    f.getline(a, sizeof(a));
    f.getline(b, sizeof(b));
    n=strlen(a);
    m=strlen(b);
    if(n>m)
        parc1();
    else
        parc2();
    g<<l<<'\n';
    for(int i=1; i<=l; i++)
        g<<v[i]<<" ";
    return 0;
}