Pagini recente » Utilizatori inregistrati la Infoarena Monthly 2012 - Runda 1 | Cod sursa (job #3284671) | Cod sursa (job #267052) | Cod sursa (job #1747175) | Cod sursa (job #3292235)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fcin("strmatch.in");
ofstream fout("strmatch.out");
string a,b;
int lps[2500000];
vector <int> rez;
int main()
{
fcin>>a>>b;
int i=1, j=0;
while(i<b.size())
{
if(a[j]==b[i]) j++, lps[i]=j, i++;
else if (j!=0) j=lps[j-1]; else i++;
if(j==a.size()) rez.push_back(i-a.size());
}
fout<<rez.size()<<'\n';
for(int i=0; i<min((int)rez.size(), 1000); i++)
fout<<rez[i]<<" ";
return 0;
}