Pagini recente » Cod sursa (job #2948325) | Cod sursa (job #350827) | Cod sursa (job #2913972) | Cod sursa (job #1986707) | Cod sursa (job #1004404)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("elimin2.in");
ofstream g("elimin2.out");
short i,j,maxi,nm,n,di,v[2020],d[2020][2020],pr[2020][11],ul[2020][11];
char s[2020];
inline void afis(short x,short y)
{
if(x>y||!x)
return ;
if(x==y)
{
g<<v[x];
return ;
}
if(v[x]==v[y])
g<<v[x];
for(i=9;i>=0;--i)
if(d[pr[x+1][i]][ul[y-1][i]]+2==d[x][y])
{
afis(pr[x+1][i],ul[y-1][i]);
break;
}
if(v[x]==v[y])
g<<v[x];
}////////////////
int main()
{//////////////
f>>(s+1);
n=strlen(s+1);
for(i=1;i<=n;++i)
v[i]=s[i]-'0';
for(i=1;i<=n;++i)
{
for(j=0;j<=9;++j)
ul[i][j]=ul[i-1][j];
ul[i][v[i]]=i;
}
for(i=n;i;--i)
{
for(j=0;j<=9;++j)
pr[i][j]=pr[i+1][j];
pr[i][v[i]]=i;
}
for(i=1;i<=n;++i)
{
d[i][i]=1;
}
for(di=2;di<=n;++di)
{
for(j=di;j<=n;++j)
{
i=j-di+1;
if(v[i]==v[j])
d[i][j]=d[i+1][j-1]+2;
else
d[i][j]=max(d[i+1][j],d[i][j-1]);
}
}
maxi=1;
for(i=1;i<=n;++i)
if(v[i]>v[maxi])
maxi=i;
nm=i;
for(i=10;i;--i)
if(d[pr[1][i]][ul[n][i]]>d[maxi][nm])
maxi=pr[1][i],nm=ul[n][i];
afis(maxi,nm);
g<<'\n';
return 0;
}