Cod sursa(job #2506173)

Utilizator MarcGrecMarc Grec MarcGrec Data 7 decembrie 2019 17:32:35
Problema Potrivirea sirurilor Scor 14
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <cstring>
using namespace std;

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

#define DIM 2000000

char A[DIM + 1], B[DIM + 1];
int indici[1001];

int main()
{
    fin >> A >> B;

    int la = strlen(A);
    int lb = strlen(B);

    int pos = 0, rasp = 0;
    for (int i = 0; i < lb; ++i)
    {
        if (A[pos] == B[i])
        {
            ++pos;

            if (pos == la)
            {
                pos = 0;
                if (A[pos] == B[i]) { --i; }

                ++rasp;
                if (rasp < 1001) { indici[rasp] = i - la + 2; }
            }
        }
        else
        {
            pos = 0;
            if (A[pos] == B[i]) { --i; }
        }
    }

    fout << rasp << '\n';

    for (int i = 1; i <= rasp; ++i)
    {
        if (i > 1000) { break; }

        fout << indici[i] << ' ';
    }

    fin.close();
    fout.close();
    return 0;
}