Cod sursa(job #919047)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 19 martie 2013 12:39:38
Problema PalM Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream>
#define NMAX 504
#define ASCII 26
#include<cstring>
#define dim 666
#define diMM 31
#define SPECIAL_FOR for(i=1;i<=n;i++) for(j=n;j>=i;j--) for(k=1;k<=ASCII;k++)
using namespace std;
ifstream f("palm.in");
ofstream g("palm.out");
int d[dim][dim][diMM];
int n;
char s[1005];
int i,j,k;
int rez;
void solve()
{
SPECIAL_FOR
{
d[i][j][k]=max(d[i-1][j][k],d[i][j+1][k]);
if(s[i]==s[j]&&s[i]-'a'+1==k)
d[i][j][k]=max(d[i][j][k],d[i-1][j+1][k]+1);
d[i][j][k]=max(d[i][j][k],d[i][j][k-1]);
} 
for(i=1;i<=n;i++)
{
rez=max(rez,2*d[i][i][26]-1);
rez=max(rez,2*d[i][i+1][26]);
}
}
int main()
{
f>>s;
n=strlen(s);
for(i=n;i>=1;i--)
s[i]=s[i-1];
solve();
g<<rez;
return 0;
}