Cod sursa(job #2568788)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 4 martie 2020 09:52:02
Problema PalM Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <cstring>

#define N 501

using namespace std;

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

char S[N], let;
int d[N][N];

int main()
{   int n, i, j, l, Max = 0;
    f >> ( S + 1 );
    n = strlen ( S + 1 );
    for ( let = 'z'; let >= 'a'; let-- ){
        for ( i = 1; i <= n; i++ )
            if ( S[i] == let )
                d[i][i] = 1;
        for ( l = 2; l <= n; l++ ){
            for ( i = 1; i <= n - l + 1; i++ ){
                j = i + l - 1;
                if ( S[i] == S[j] && S[i] == let )
                    d[i][j] = max ( d[i][j], d[i + 1][j - 1] + 2 );
                d[i][j] = max ( d[i][j], max ( d[i + 1][j], d[i][j - 1] ) );
            }
        }
        Max = max ( Max, d[1][n] );
    }
    g << Max;
    return 0;
}