Cod sursa(job #636551)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 19 noiembrie 2011 21:13:59
Problema PalM Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.72 kb
#include <fstream>
#include <cstring>
#define max(a,b) ((a<b)?b:a)
using namespace std;
int a[502][502][27],i,j,n,l,Max;
string s;
int main()
{
   ifstream fi("palm.in");
   ofstream fo("palm.out");
   fi>>s;
   n=s.length();
   for(i=n;i>0;i--)
   for(a[i][i][s[i-1]-'a']=1,j=i+1;j<=n;j++)
   if(s[i-1]==s[j-1])
   {
      for(Max=0,l=s[i-1]-'a';l<26;l++)
      if(Max<a[i+1][j-1][l]+2) Max=a[i+1][j-1][l]+2;
      a[i][j][s[i-1]-'a']=Max;
      for(l=0;l<26;l++)
      if(l!=s[i-1]-'a') a[i][j][l]=max(a[i+1][j][l],a[i][j-1][l]); 
    } else
      for(l=0;l<26;l++) a[i][j][l]=max(a[i+1][j][l],a[i][j-1][l]);
                        
   
   for(Max=0,l=0;l<26;l++) if(a[1][n][l]>Max) Max=a[1][n][l];
   fo<<Max<<"\n";
   return 0;
}