Pagini recente » Cod sursa (job #260105) | Cod sursa (job #2930338) | Cod sursa (job #447819) | Borderou de evaluare (job #232693) | Cod sursa (job #635996)
Cod sursa(job #635996)
#include<fstream>
#include<cstring>
#define NX 550
using namespace std;
char a[NX],mat2[NX][NX];
int mat[NX][NX],lg,s;
ifstream f("palm.in");
ofstream g("palm.out");
void read();
void initialise();
void solve();
int main()
{
read();
initialise();
solve();
g<<mat[0][lg-1];
f.close();
g.close();
return 0;
}
void read()
{
f.getline(a,NX);
lg=strlen(a);
}
void initialise()
{
int i;
for (i=0;i<lg;++i)
{
mat[i][i]=1;
mat2[i][i]=a[i];
}
}
void solve()
{
int k,i,j,maxa,c;
for (k=1;k<lg;++k)
for (i=0,j=k;j<lg;++i,++j)
if (a[i]==a[j]&&a[i]<=mat2[i+1][j-1])
{
mat2[i][j]=a[i];
mat[i][j]=mat[i+1][j-1]+2;
}
else
{
c=mat2[i+1][j];
maxa=mat[i+1][j];
if (maxa<mat[i][j-1])
{
maxa=mat[i][j-1];
c=mat2[i][j-1];
}
mat[i][j]=maxa;
mat2[i][j]=c;
}
}