Pagini recente » Cod sursa (job #1819554) | Cod sursa (job #1547372) | Cod sursa (job #2691649) | Cod sursa (job #178980) | Cod sursa (job #1609223)
#include <iostream>
#include <cstring>
#include <fstream>
#define inFile "strmatch.in"
#define outFile "strmatch.out"
#define NMAX 2000002
using namespace std;
char s1[NMAX], s2[NMAX];
int n1, n2, apar, poz[NMAX];
int main()
{
ifstream fin(inFile);
fin.getline(s1, NMAX);
fin.getline(s2, NMAX);
n1 = strlen(s1), n2 = strlen(s2);
int j = 0, prec = 0;
bool ok = true;
for(int i = 0; i < n2; ++i) {
if(ok) i = prec;
if(!ok) prec = --i;
j = 0;
if(s2[i] == s1[j]) {
++j;
ok = true;
for(; j < n1; ++j) {
++i;
if(s1[j] != s2[i]) {
ok = false;
break;
}
}
if(ok) {
poz[++apar] = prec;
prec++;
}
}
else{ prec++; ok = true; }
}
ofstream fout(outFile);
fout<<apar<<"\n";
for(int i = 1; i <= apar; ++i)
fout<<poz[i]<<" ";
}