Cod sursa(job #3176626)
| Utilizator | Data | 27 noiembrie 2023 14:12:50 | |
|---|---|---|---|
| Problema | Potrivirea sirurilor | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout(" strmatch.out");
vector <int> rezultat;
int pi[2000000];
int main()
{
string s,t,tot;
fin>>t>>s;
tot=t+"#"+s;
int rez=0;
for(int i=1; i<=tot.size() ;i++)
{
int j=pi[i-1];
while(j>0 && tot[i]!=tot[j])
j=pi[j-1];
if(tot[i]==tot[j])
j++;
pi[i]=j;
if(i>t.size() && j == t.size())
{
rez++;
rezultat.push_back(i);
}
}
fout<<rez<<"\n";
for(auto i:rezultat)
fout<<i- 2*t.size()<<" ";
}
