Pagini recente » Cod sursa (job #2560252) | Borderou de evaluare (job #693721) | Cod sursa (job #2325301) | Cod sursa (job #682955) | Cod sursa (job #1818619)
#include <iostream>
#include <fstream>
using namespace std;
string s;
int i,j,n,len,k,best[505][505];
char c;
int main()
{
ifstream f("palm.in");
ofstream g("palm.out");
f>>s;
n=s.size();
s+=' ';
for(k=25;k>=0;k--)
{
c=k+'a';
for(i=1;i<=n;i++)
if(s[i-1]==c) best[1][i]=1;
for(len=0;len<=n;len++)
for(i=1;i<=n-len+1;i++)
{
if(best[len][i]>best[len+1][i])
best[len+1][i]=best[len][i];
if(best[len][i]>best[len+1][i-1])
best[len+1][i-1]=best[len][i];
if(i>=2&&best[len][i]+2>best[len+2][i-1]&&s[i-2]==s[i+len-1]&&s[i-2]==c)
{best[len+2][i-1]=best[len][i]+2;}
}
}
g<<best[n][1];
return 0;
}