Pagini recente » Cod sursa (job #1478871) | Cod sursa (job #1938958) | Cod sursa (job #784657) | Cod sursa (job #2863099) | Cod sursa (job #1674877)
#include <cstdio>
#include <vector>
using namespace std;
char a[2000000], b[2000000];
int main()
{
FILE* f=fopen("strmatch.in", "r");
FILE* f1=fopen("strmatch.out", "w");
fscanf(f, "%s\n%s", &a, &b);
vector<int> v;
vector<int> fin;
int i=-1;
int c=0;
int fincnt=0;
do{
i++;
for(vector<int>::iterator it= v.begin();it!=v.end();it++)
{
if(a[i-(*(it))]=='\0'){
c++;
if(fincnt<1000){
fin.push_back(*it);
fincnt++;
}
v.erase(it);
it--;
}
else if(a[i-*it]!=b[i]){
v.erase(it);
it--;
}
}
if(b[i]==a[0])
v.push_back(i);
}while(b[i]!='\0');
fprintf(f1, "%d\n", c);
for(int i=0;i<c&&i<1000;i++){
fprintf(f1, "%d ", fin[i]);
}
fprintf(f1, "\n");
return 0;
}