Pagini recente » Cod sursa (job #3005042) | Cod sursa (job #1422916) | Cod sursa (job #2223870) | Cod sursa (job #2434783) | Cod sursa (job #2835275)
#include <fstream>
using namespace std;
ifstream cin( "ordine.in" );
ofstream cout( "ordine.out" );
int a[ 45 ];
char c[ 1000003 ];
int main()
{
string s;
cin >> s;
int right = s.size();
if( right == 1 ) {
cout << s << '\n';
return 0;
}
for( int i = 0; i < right; i++ )
++a[ s[ i ] - 'a' + 1 ];
bool ok = false;
int n = right;
for( int i = 1; i <= n; i++ ) {
ok = false;
for( int j = 1; j <= 26; j++ )
if( a[ j ] >= ( n - i + 1 ) / 2 + 1 && j + 'a' - 1 != c[ i - 1 ] ) {
ok = true;
c[ i ] = j + 'a' - 1;
--a[ j ];
break;
}
if( !ok )
for( int j = 1; j <= 26; j++ )
if( a[ j ] != 0 && j + 'a' - 1 != c[ i - 1 ] ) {
c[ i ] = j + 'a' - 1;
--a[ j ];
break;
}
}
cout << c + 1;
return 0;
}