Pagini recente » Cod sursa (job #2205099) | Cod sursa (job #478215) | Cod sursa (job #58084) | Cod sursa (job #2473450) | Cod sursa (job #1569820)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int get_number_of_palindroms_from(int x, const char *str, int l)
{
//verifcam secventele centrate in x, apoi centrate in (x si x-1)
int number_pal=1, left=x, right=x;
//pt cenrare in x
while(1)
{
left--;
right++;
if(right==l || left<0)
break;
if(str[left]==str[right])
number_pal++;
else
break;
}
//pt centrare in x-1 si x
left=x;
right=x;
while(1)
{
//mia intai tb ca str[x-1] si str[x] sa fie egale
left--;
if(left<0)
break;
if(str[x]!=str[left])
break;
else
number_pal++;
left--;
right++;
if(right==l || left<0)
break;
if(str[left]==str[right])
number_pal++;
else
break;
}
cout<<"de la "<<x<<": "<<number_pal<<"\n";
return number_pal;
}
int main()
{
fstream f, g;
char str[1000000];
int i, l, sum=0;
f.open("pscpld.in", ios::in);
g.open("pscpld.out", ios::out);
f>>str; l=strlen(str);
for(i=0; i<l; i++)
{
sum+=get_number_of_palindroms_from(i, str, l);
}
g<<sum;
return 0;
}