Cod sursa(job #638933)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 21 noiembrie 2011 22:40:30
Problema PalM Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <cstring>
using namespace std;

ifstream f("palm.in");
ofstream g("palm.out");

string s;
int i,n,v[501],sol=0,l[501][501][28],maxi,j,k;


int main () {
    f >> s;
    n=s.size();
    for (i=1;i<=n;i++) v[i]=int(s[i-1])-int('a')+1;
    for (i=1;i<=n;i++)
        for (k=1;k<=v[i];k++)
            l[i][i][k]=1;
    for (j=2;j<=n;j++)
        for (i=1;i<=n-j+1;i++) {
            for (k=1;k<=27;k++)
                l[i][i+j-1][k]=max(l[i+1][i+j-1][k],l[i][i+j-2][k]);
            if (v[i]==v[i+j-1]) {
                for (k=1;k<=v[i];k++)
                    if (j>2)
                        l[i][i+j-1][k]=max(l[i][i+j-1][k],l[i+1][i+j-2][v[i]]+2);
                    else
                        l[i][i+j-1][k]=max(l[i][i+j-1][k],2);
            }
        }
    g << l[1][n][1] << '\n';
    f.close();g.close();
    return 0;
}