Cod sursa(job #3222198)

Utilizator 1ana.9Loga Ana Natalia 1ana.9 Data 9 aprilie 2024 11:54:49
Problema Potrivirea sirurilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

string s,t;
vector <int> rez;
int k;
int main()
{
    f>>s>>t;
    vector <int> pi(s.size());
    pi[0]=0;
    for(int i=1;i<s.size();i++)
    {
        while(k>0 && s[k]!=s[i])
        {
            k=pi[k-1];
        }
        if(s[k]==s[i])
            k++;
        pi[i]=k;
    }
    vector <int> pi2(t.size());
    k=0;
    for(int i=0;i<t.size();i++)
    {
        while(k>0 && s[k]!=t[i])
        {
            k=pi[k-1];
        }
        if(s[k]==t[i])
            k++;
        pi2[i]=k;
        if(k==s.size())
            rez.push_back(i-k+1);
    }
    g<<rez.size()<<'\n';
    if(rez.size()>1000)
        for(int i=0;i<1000;i++)
            g<<rez[i]<<" ";
    else
        for(int i=0;i<rez.size();i++)
            g<<rez[i]<<" ";
    return 0;
}