Cod sursa(job #2537337)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 3 februarie 2020 16:18:33
Problema PalM Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
#include<cstring>
using namespace std;
int n, i, j, lg, ii, sol;
char s[505];
int d[505][505][28];
ifstream fin("palm.in");
ofstream fout("palm.out");
int main(){
    fin>> s + 1;
    n = strlen(s + 1);
    for(i = 1; i <= n; i++){
        s[i] -= 'a' - 1;
    }
    for(lg = n; lg >= 1; lg--){
        for(i = 1; i <= n - lg + 1; i++){
            j = i + lg - 1;
            for(ii = 1; ii <= 26; ii++){
                d[i][j][ii] = max(d[i - 1][j][ii], max(d[i][j + 1][ii], d[i][j][ii - 1]) );
                if(s[i - 1] == s[j + 1] && s[i - 1] == ii){
                    d[i][j][ii] = max(d[i][j][ii], 2 + d[i - 1][j + 1][ii]);
                }
                sol = max(sol, d[i][j][ii]);
                if(s[i] == s[j] && s[i] == ii && i != j){
                    sol = max(sol, d[i][j][ii] + 2);
                }
                if(s[i] == ii){
                    sol = max(sol, d[i][j][ii] + 1);
                }
            }
        }
    }
    fout<< sol <<"\n";
    return 0;
}