Pagini recente » Cod sursa (job #768252) | Cod sursa (job #1162865) | Cod sursa (job #3170586) | Cod sursa (job #1313311) | Cod sursa (job #1984757)
#include <bits/stdc++.h>
#define nmax 2000001
using namespace std;
char a[nmax];
char b[nmax];
vector <int> afis;
bool verif(int poz, int la)
{
if(la%2==0){
for(int i=0;i<la/2;i++)
{
if(a[i]!=b[poz+i]||a[la-i-1]!=b[la+poz-i-1])
return false;
}
return true;
}
else
{
for(int i=0;i<la/2;i++)
{
if(a[i]!=b[poz+i]||a[la-i-1]!=b[la+poz-i-1])
return false;
}
if(a[la/2]!=b[poz+la/2])
return false;
return true;
}
}
int main()
{
freopen("strmatch.in", "r", stdin);
freopen("strmatch.out", "w", stdout);
int la, lb;
gets(a);
gets(b);
la=strlen(a);
lb=strlen(b);
int n=0;
for(int i=0;i<=lb-la;i++)
{
if(verif(i, la)==true)
{
n++;
afis.push_back(i);
}
}
printf("%d\n", n);
for(int i=0;i<afis.size();i++)
printf("%d ", afis[i]);
printf("\n");
return 0;
}