Pagini recente » Cod sursa (job #1226144) | Cod sursa (job #38007) | Cod sursa (job #256737) | Cod sursa (job #707279) | Cod sursa (job #77106)
Cod sursa(job #77106)
#include <stdio.h>
#include <stdlib.h>
#define infile "pscpld.in"
#define outfile "pscpld.out"
#define nmax 1000000
int s[nmax];
int *c[nmax];
int n, i, j;
long rez;
void readdata()
{
freopen(infile, "r", stdin);
while (!feof(stdin))
scanf("%c", &s[n++]);
n--;
fclose(stdin);
}
void solve()
{
for (i=0; i<=n+1; i++)
c[i]=(int *)calloc(n+2, sizeof(int));
for (i=1; i<=n; i++)
{
c[i][i]=1;
rez++;
if (s[i-1]==s[i])
{
c[i][i+1]=1;
rez++;
}
}
for (i=2; i<=n-1; i++)
for (j=1; j<=n-i; j++)
if (s[j-1]==s[j+i-1] && c[j+1][j+i-1])
{
c[j][j+i]=1;
rez++;
}
}
void writedata()
{
freopen(outfile, "w", stdout);
printf("%ld", rez);
fclose(stdout);
}
int main()
{
readdata();
solve();
writedata();
return 0;
}