Pagini recente » Cod sursa (job #410525) | Cod sursa (job #1918048) | Cod sursa (job #2754212) | Cod sursa (job #655928) | Cod sursa (job #190395)
Cod sursa(job #190395)
#include <cstdio>
#include <cstring>
#define fin "ordine.in"
#define fout "ordine.out"
const int Nmax = 1000012;
const int Cmax = 27;
char buff[Nmax];
int a[Cmax];
int N,pozm,cntm,sumt,ultim;
inline void detmax(int &p,int &nr)
{
int i;
nr = 0;
for ( i = 0; i < Cmax; ++i )
if ( a[i] > nr )
nr = a[i], p = i;
}
int main()
{
int i,j;
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
fgets(buff,Nmax,stdin);
for ( i = 0; buff[i] != '\n'; ++i )
++a[ buff[i] - 'a' ], ++sumt;
detmax(pozm,cntm);
ultim = -1;
for ( i = 0; buff[i] != '\n'; ++i )
{
for ( j = 0; j < Cmax && ( a[j] == 0 || j == ultim ); ++j );
if ( 2 * cntm > sumt || j == pozm )
printf("%c",pozm + 'a'), --a[pozm], ultim = pozm;
else
{
printf("%c",j + 'a');
--a[j];
ultim = j;
}
--sumt;
detmax(pozm,cntm);
}
printf("\n");
return 0;
}