Cod sursa(job #2719518)

Utilizator GeoDinBacauTofan George GeoDinBacau Data 9 martie 2021 22:23:15
Problema Potrivirea sirurilor Scor 24
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fcin("strmatch.in");
ofstream fcout("strmatch.out");
char A[2000000],B[2000000];
int sol[1000],nr;

bool verif(int poz)
{
    for(int i=0;i<strlen(A);i++)
        if(A[i]!=B[poz+i]){
//            cout<<" "<<i<<": "<<A[i]<<" != "<<B[poz+1]<<endl;
            return 0;
        }

    return 1;
}

void solve1()
{
    for(int i=0;i<strlen(B)-strlen(A);i++)
        if(verif(i)){
            nr++;
            if(nr<=1000)
                sol[nr]=i;
        }

}

void afis(char x[])
{
    cout<<endl;
    for(int i=0;i<strlen(x);i++)
        cout<<i<<' ';
    cout<<endl;
    for(int i=0;i<strlen(x);i++)
        cout<<x[i]<<' ';
    cout<<endl;
}

int main()
{
    fcin.getline(A,100000);
    fcin.getline(B,100000);
//    fcin>>A;fcin.get();
//    fcin>>B;fcin.get();
//    afis(A);
//    afis(B);
    if(strlen(A)==strlen(B)){
        if(strcmp(A,B)==0)
            cout<<1<<endl<<0<<' ';
        else
            cout<<0;
        return 0;
    }
    if(strlen(A)>strlen(B)){
        cout<<0;
        return 0;
    }
    solve1();
    fcout<<nr<<endl;
    for(int i=1;i<=nr && i<=1000;i++)
        fcout<<sol[i]<<' ';
    return 0;
}