Pagini recente » Cod sursa (job #311945) | Cod sursa (job #296888) | Cod sursa (job #2877218) | Cod sursa (job #2042633) | Cod sursa (job #1332834)
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstring>
#include<set>
#include<map>
#include<cmath>
using namespace std ;
#define maxalfa 30
#define maxn 1000005
int v[maxalfa], N ;
char sol[maxn] ;
int act = 1 ;
int maxx, cinemaxx ;
int main()
{
std::ios_base::sync_with_stdio(false) ;
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
char ch ;
cin >> ch ;
while( !cin.eof() )
{
if( 'a' <= ch && ch <= 'z' )
++v[ch - 'a'], ++N ;
cin >> ch ;
}
for(int i = 0; i < maxalfa; ++i)
{
if( v[i] > maxx )
{
maxx = v[i] ;
cinemaxx = i ;
}
}
while( act <= N )
{
if( maxx == ( N - act + 1 ) / 2 + 1 )
{
sol[act] = 'a' + cinemaxx ;
--v[cinemaxx] ;
++act ;
}
else
{
for(int i = 0; i < maxalfa; ++i)
{
if( v[i] > 0 && i != sol[act - 1] - 'a' )
{
sol[act] = 'a' + i ;
--v[i] ;
++act ;
break ;
}
}
}
maxx = 0 ;
for(int i = 0; i < maxalfa; ++i)
{
if( v[i] > maxx )
{
maxx = v[i] ;
cinemaxx = i ;
}
}
}
for(int i = 1; i <= N+1; ++i)
cout << sol[i] ;
return 0 ;
}