Cod sursa(job #2541643)

Utilizator mirceaisherebina mircea mirceaishere Data 8 februarie 2020 17:48:44
Problema PalM Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <cstdio>
#include <cstring>
using namespace std;
ifstream fin("palm.in");
ofstream fout("palm.out");

int n, i, j, k, d[510][510][30], sol;
char s[510], ch;

int main(){
    fin>>(s+1);
    n=strlen(s+1);
    for(i=1; i<=n; i++){
        for(j=n; j>=1; j--){
            for(k=0; k<=25; k++){
                ch=k+'a';
                if(s[i]==ch && s[j]==ch){
                    d[i][j][k]=d[i-1][j+1][k]+1;
                }
                if(d[i][j][k]<d[i-1][j][k]){
                    d[i][j][k]=d[i-1][j][k];
                }
                if(d[i][j][k]<d[i][j+1][k]){
                    d[i][j][k]=d[i][j+1][k];
                }
                if(d[i][j][k]<d[i][j][k-1]){
                    d[i][j][k]=d[i][j][k-1];
                }
            }
        }

    }
    for(i=1; i<=n; i++){
        /// daca secventa are in varf un element sau 2
        sol=max(sol, max(d[i][i][25]*2-1, d[i][i+1][25]*2));

    }
    fout<<sol;
}