Cod sursa(job #637440)
# include <fstream>
# include <cstring>
using namespace std;
ifstream f ("palm.in");
ofstream g ("palm.out");
using namespace std;
int a[1005][300],i,j,k,q,maxim,n,d[1005][300],ok;
char s[1000];
int main ()
{
f.getline (s,1000);
n=strlen (s);
for (i=0;i<n;i++)
{
for (j=0;j<i;j++)
if (s[j-1]==s[j] && d[j-1][s[j]]==0)
{
a[j][s[j]]=a[j-1][s[j]]-1;
}
else
if (s[j]==s[i])
{
ok=0;
maxim=0;
for (k=j+1;k<i;k++)
for (q=s[i];q<='z';q++)
{
if (maxim<a[k][q])
{
maxim=a[k][q];
if (q==s[i] && d[k][q]==0)
ok=1;
else
ok=0;
}
}
if (maxim==0)
a[j][s[j]]=2;
else
{
if (ok==0)
d[j][s[j]]=1;
a[j][s[j]]=maxim+2;
}
}
if (a[i][s[j]]==0)
a[i][s[j]]=1;
}
maxim=0;
for (i=0;i<n;i++)
for (j='a';j<='z';j++)
if (maxim<a[i][j])
maxim=a[i][j];
g<<maxim;
return 0;
}