Cod sursa(job #77106)

Utilizator coderninuHasna Robert coderninu Data 13 august 2007 02:01:49
Problema PScPld Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#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;
}