Cod sursa(job #1745342)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 21 august 2016 17:39:25
Problema PalM Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream cin("palm.in");
ofstream cout("palm.out");

const int MAXN = 500;

char s[1 + MAXN];
int dp[1 + MAXN][1 + MAXN];

int main() {
    cin >> s + 1;
    int n = strlen(s + 1);
    for (char letter = 'z'; letter >= 'a'; letter--) {
        for (int i = 1; i <= n; i++)
            if (s[i] == letter)
                dp[i][i] = 1;
        for (int l = 1; l < n; l++)
            for (int i = 1; i + l <= n; i++) {
                if (s[i] == s[i + l] && s[i] == letter)
                    dp[i][i + l] = dp[i + 1][i + l - 1] + 2;
                dp[i][i + l] = max(dp[i][i + l], max(dp[i][i + l - 1], dp[i + 1][i + l]));
            }
    }
    cout << dp[1][n];
    return 0;
}