Pagini recente » Cod sursa (job #2383296) | Cod sursa (job #1905287) | Cod sursa (job #433264) | Cod sursa (job #1390010) | Cod sursa (job #353581)
Cod sursa(job #353581)
#include<stdio.h>
#include<string.h>
#define DIM 2005
char a[DIM],sol1[DIM/2],sol2[DIM/2];
int n,v[DIM][DIM],b[DIM][DIM],q;
int max (int x,int y)
{
if(x<y)
return y;
return x;
}
void pal (int i,int j)
{
if(v[i][j])
return ;
v[i][j]=1;
if(i>j)
return ;
if(i==j)
{
b[i][j]=1;
return ;
}
if(a[i]==a[j])
{
sol1[++q]=i;
sol2[q]=j;
pal (i+1,j-1);
b[i][j]=2+b[i+1][j-1];
return ;
}
pal (i+1,j);
pal (i,j-1);
b[i][j]=max(b[i+1][j],b[i][j-1]);
}
int main ()
{
freopen("elimin2.in","r",stdin);
freopen("elimin2.out","w",stdout);
int i,j;
while(scanf("%c",&a[++n])!=EOF);
n-=2;
pal (1,n);
j=0;
if(a[sol1[1]]=='0')
j=1;
if(1+j==q && j==1)
{
if(sol1[1]!=1)
printf("%c",a[sol1[1]-1]);
else
printf("%c",a[sol2[1]+1]);
return 0;
}
for(i=1+j;i<=q;++i)
printf("%c",a[sol1[i]]);
if(sol1[q]<sol2[1])
printf("%c",a[sol1[q]+1]);
for(i=q;i>j;--i)
printf("%c",a[sol2[i]]);
return 0;
}