Pagini recente » Cod sursa (job #331274) | Cod sursa (job #1449183) | Cod sursa (job #55519) | Cod sursa (job #3247773) | Cod sursa (job #2964589)
#include <iostream>
#include <vector>
#include <cstdio>
#define MAX_N 2000005
using namespace std;
char a[MAX_N], b[MAX_N];
FILE *fin=fopen("strmatch.in", "r");
FILE *fout=fopen("strmatch.out", "w");
vector <int> contor;
int main()
{
fscanf(fin, "%s", a);
fscanf(fin, "%s", b);
int indexA=0, indexB=0, start_poz=-1;
for (indexB=0; b[indexB]!='\0'; indexB++) {
if (a[indexA]=='\0') {
contor.push_back(start_poz);
indexB=start_poz;
start_poz=-1;
indexA=0;
continue;
}
//if (indexB==102) cout<<indexA<<endl;
if (a[indexA]==b[indexB]) {
if (start_poz==-1) {
start_poz=indexB;
}
indexA++;
}
else {
if (start_poz!=-1) {
indexB=start_poz;
start_poz=-1;
indexA=0;
}
}
}
if (a[indexA]=='\0') {
contor.push_back(start_poz);
indexB=start_poz;
start_poz=-1;
indexA=0;
}
fprintf(fout, "%d\n", contor.size());
int last_poz=contor.size();
if (contor.size()>1000) last_poz=1000;
for (int i=0; i<last_poz; i++) {
fprintf(fout, "%d ", contor[i]);
}
return 0;
}