Pagini recente » Cod sursa (job #1673803) | Cod sursa (job #617102) | Cod sursa (job #2938034) | Cod sursa (job #3231871) | Cod sursa (job #37702)
Cod sursa(job #37702)
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("elimin2.in");
ofstream fout("elimin2.out");
int lung, st, dr, k1, maxi, imp, pus;
char s[100], b[100], a[100];
void back(int , int , int);
int main()
{
fin.getline(s, 2001);
lung=strlen(s);
back(0, 0, lung);
fout<<a;
if(imp)
for(int i=k1-2; i>=0; i--)
fout<<a[i];
else
for(int i=k1-1; i>=0; i--)
fout<<a[i];
return 0;
}
void back(int k, int st, int dr)
{
for(int i=st; i<=dr; i++)
{
if((k==0 && s[i]!='0') || k>0)
for(int j=dr-1; j>=i; j--)
{
if(s[j]==s[i] && i!=j)
{
maxi=0;
b[k]=s[i];
back(k+1, i+1, j);
b[k]=0;
break;
}
else if(s[j]-'0'>maxi)
maxi=s[j]-'0';
}
}
if(maxi)
{
b[k]=maxi+'0';
pus=1;
}
else
pus=0;
if((strcmp(b, a)>0 && b[0]!='0'&& strlen(b)==strlen(a)) || k>=k1)
{
strcpy(a, b);
k1=k;
imp=0;
if(pus)
{
imp=1;
k1++;
b[k]=0;
}
maxi=0;
k=0;
}
else if(pus)
b[k]=0;
}