Cod sursa(job #3308902)

Utilizator anca.gdDumitru Anca Gabriela anca.gd Data 29 august 2025 20:57:10
Problema Potrivirea sirurilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
char s[2000005];
int p[2000005], indx;
vector<int> sol;
int main()
{
    s[0]='*';
    cin>>(s+1);
    int n=strlen(s)-1;
    s[n+1]='&';
    cin>>(s+n+2);
    int m=strlen(s)-1;
    for(int i=2; i<=m;i++){
        int aux=p[i-1];
        while(aux && s[aux+1]!=s[i])
            aux=p[aux];
        p[i]=aux;
        if(s[aux+1]==s[i])
            p[i]++;
        if(p[i]==n) indx++;
        if(p[i]==n && indx<=1000)
            sol.push_back(i-2*n-1);
    }
    cout<<indx<<'\n';
    for(auto x: sol)
        cout<<x<<' ';
    return 0;
}