Pagini recente » Cod sursa (job #2021271) | Cod sursa (job #2961780) | Cod sursa (job #3126170) | Cod sursa (job #2479448) | Cod sursa (job #532745)
Cod sursa(job #532745)
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
int r[2002],a[2002],rr[2002];
char s[2002];
int palim()
{
int i=0,j=strlen(s);
while(r[i]==0 && i<strlen(s))i++;
if(a[i]==0)return 0;
i=0;
while(i<j)
{
while(r[i]==0 && i<strlen(s))i++;
while(r[j]==0 && j>=0)j--;
if(a[i++]!=a[j--])return 0;
}
return 1;
}
void comp()
{
int j1=0,j2=0,i,nr1=0,nr2=0;
for(i=0;i<strlen(s);i++)
{
if(r[i]==1)nr1++;
if(rr[i]==1)nr2++;
}
if(nr2<nr1)
for(i=0;i<strlen(s);i++)rr[i]=r[i];
else if(nr2==nr1)
while(j1<=strlen(s)/2 && j2<=strlen(s)/2)
{
while(r[j1]==0 && j1<=strlen(s)/2)j1++;
while(rr[j2]==0 && j2<=strlen(s)/2)j2++;
if(a[j2++]<a[j1++])
for(i=0;i<strlen(s);i++)rr[i]=r[i];
}
}
int main()
{
freopen("elimin2.in","r",stdin);
freopen("elimin2.out","w",stdout);
int i,j,nr=0;
scanf("%s",s);
for(i=0;i<strlen(s);i++)
{a[i]=s[i]-'0';r[i]=1;}
for(i=0;i<strlen(s);i++)r[i]=0;
int flag=1;
while(flag)
{
i=strlen(s)-1;
while(r[i]==1 && i>=0)i--;
if(i<0)flag=0;
else
{
r[i]=1;
for(j=i+1;j<strlen(s);j++)r[j]=0;
if(palim())comp();
}
}
for(i=0;i<strlen(s);i++)
if(rr[i]==1)
printf("%d",a[i]);
return 0;
}