Cod sursa(job #856689)

Utilizator stoicatheoFlirk Navok stoicatheo Data 16 ianuarie 2013 20:48:50
Problema PalM Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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;
}