Pagini recente » Cod sursa (job #2172340) | Cod sursa (job #2958748) | Cod sursa (job #2903376) | Cod sursa (job #1783714) | Cod sursa (job #639568)
Cod sursa(job #639568)
#include <fstream>
#include <cstring>
using namespace std;
int a[510][510][27];
char sir[514];
int main()
{
ifstream f("palm.in");
ofstream g("palm.out");
f.getline(sir+1,510);
int n=strlen(sir+1);
if(!(sir[n-1]>='a' && sir[n-1]<='z')) n/=0;
int sol=0;
for(int i=1;i<=n;++i)
{
for(int j=i;j<=n;++j)
{
int st=j-i+1,dr=j;
if(sir[st]==sir[dr])
{
a[st][dr][sir[st]-'a']=max(a[st][dr][sir[st]-'a'],1+(st!=dr));
if(i>2)
for(int l=sir[st]-'a';l<26;++l)
a[st][dr][sir[st]-'a']=max(a[st][dr][sir[st]-'a'],a[st+1][dr-1][l]+2);
}
if(i>2)
for(int l=0;l<26;++l)
a[st][dr][l]=max(a[st][dr][l],max(a[st][dr-1][l],a[st+1][dr][l]));
}
}
/*for (int i=1;i<=n;++i)
for(int j=i;j<=n;++j)
{
g<<i<<' '<<j;
g<<'\n';
for(int l=0;l<26;++l)
g<<a[i][j][l]<<' ';
g<<'\n';
}*/
for(int i=1;i<=n;++i)
for(int j=i;j<=n;++j)
for(int k=0;k<26;++k)
if(a[i][j][k]>sol) sol=a[i][j][k];
g<<sol;
g.close();
return 0;
}