Pagini recente » Borderou de evaluare (job #2452480) | Borderou de evaluare (job #2380085) | Cod sursa (job #635304) | Cod sursa (job #1088062) | Cod sursa (job #2998576)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int n, m, l, v[2000001];
char a[2000001], b[2000001];
bool ok1(int x)
{
for(int i=0; i<m; i++)
if(a[x+i]!=b[i])
return 0;
return 1;
}
void parc1()
{
for(int i=0; i<n-m; i++)
if(ok1(i))
v[++l]=i;
}
bool ok2(int x)
{
for(int i=0; i<n; i++)
if(b[x+i]!=a[i])
return 0;
return 1;
}
void parc2()
{
for(int i=0; i<m-n; i++)
if(ok2(i))
v[++l]=i;
}
int main()
{
f.getline(a, sizeof(a));
f.getline(b, sizeof(b));
n=strlen(a);
m=strlen(b);
if(n>m)
parc1();
else
parc2();
g<<l<<'\n';
for(int i=1; i<=l; i++)
g<<v[i]<<" ";
return 0;
}