Mai intai trebuie sa te autentifici.
Cod sursa(job #1936664)
Utilizator | Data | 23 martie 2017 11:53:00 | |
---|---|---|---|
Problema | Potrivirea sirurilor | Scor | 14 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.67 kb |
#include <fstream>
#include<vector>
using namespace std;
string a,b;
int urm[2000000],k,nrsol;
vector<int> sol;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int main()
{
f>>a>>b;
urm[0]=-1;
for(int i=1; i<a.size(); i++)
{
while(k>=0 && a[k]!=a[i]) k=urm[k];
urm[i]=k++;
}
k=0;
for(int i=0; i<b.size(); i++)
{
while(k>=0 && a[k]!=b[i]) k=urm[k];
k++;
if(k==a.size())
{
nrsol++;
sol.push_back(i-k+1);
k=urm[k]+1;
}
}
g<<nrsol<<'\n';
for(int i=0; i<min(nrsol,1000); i++)
g<<sol[i]<<' ';
return 0;
}