Cod sursa(job #1761625)

Utilizator lflorin29Florin Laiu lflorin29 Data 22 septembrie 2016 17:01:59
Problema PalM Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <bits/stdc++.h>

using namespace std;

string s;
int dp[501][501];

int main() {
	ifstream fin("palm.in");
	ofstream fout("palm.out");

	fin >> s;

	for(int i = 0; i < s.size(); ++i)
		s[i] -= 'a';
	for(int c = 25; c >= 0; --c) {
		for(int i = 0; i < s.size(); ++i)
		   if(s[i] == c) dp[i][i] = 1;
		for(int l = 1; l < s.size(); ++l) {
			for(int i = 0; i + l < s.size(); ++i) {
			    int j = i + l;
				if(s[i] == s[j] && s[i] == c)
				   dp[i][j] = max(dp[i][j], 2 + dp[i + 1][j - 1]);
				dp[i][j] = max(dp[i][j], dp[i + 1][j]);
				dp[i][j] = max(dp[i][j], dp[i][j - 1]);
			}
		}
	}

	fout << dp[0][s.size() - 1];
	return 0;
}