Cod sursa(job #543813)

Utilizator balakraz94abcd efgh balakraz94 Data 28 februarie 2011 17:10:25
Problema PScPld Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
#include<string>

#define infile "pscpld.in"
#define outfile "pscpld.out"

#define L 1000005
using namespace std;

void citeste();
void rezolva();
void afiseaza();
void solve(int);

char a[L];
int n;
int s=0;

void citeste()
{
	freopen(infile,"r",stdin);
	
	gets(a);
	
	n=strlen(a)-1;
	
	fclose(stdin);
}


void rezolva()
{
	
	for(int i=0;i<=n;i++)
	{
		solve(i);
	}
}


void solve(int k)
{
	int i=0;
	
	while(a[k-i]==a[k+i]) i++; //verifica daca caracterul curent poate fi centrul unui palindrom
	s+=i;
	
	int k1,k2;
	k1=k;
	k2=k+1;
	
	while(a[k1]==a[k1-1] && a[k2]==a[k2+1]) k1--, k2++;
	s+=(k-k1); 
	
	if(a[k]==a[k+1]) s++;
}




void afiseaza()
{
	freopen(outfile,"w",stdout);
	
	printf("%d",s);
	
	fclose(stdout);
}


int main()
{
	citeste();
	rezolva();
	afiseaza();
	
	return 0;
}