Cod sursa(job #2834971)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 17 ianuarie 2022 22:21:38
Problema Ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <fstream>

using namespace std;

ifstream cin( "ordine.in" );
ofstream cout( "ordine.out" );

int freq[ 45 ];

int main()
{
    string a;
    cin >> a;
    int right = a.size();

    if( right == 1 ) {
        cout << a << '\n';
        return 0;
    }

    for( int i = 0; i < right; i++ )
        ++freq[ a[ i ] - 'a' ];

    int left = 0;
    while( freq[ left ] == 0 )
        ++left;
    right = left + 1;
    while( freq[ right ] == 0 )
        ++right;

    while( freq[ left ] > 0 ) {
        if( left < 26 )
            cout << ( char )( left + 'a' );
        --freq[ left ];
        if( freq[ right ] > 0 ) {
            if( right < 26 )
                cout << ( char )( right + 'a' );
            --freq[ right ];
            while( right < 36 && freq[ right ] == 0 )
                ++right;
        }

        if( freq[ left ] == 0 ) {
            left = right;
            right = left + 1;
            while( right < 36 && freq[ right ] == 0 )
                ++right;
            if( freq[ right ] > 0 ) {
                if( right < 26 )
                    cout << ( char )( right + 'a' );
                --freq[ right ];
                while( right < 36 && freq[ right ] == 0 )
                    ++right;
                if( right < 26 )
                    cout << ( char )( right + 'a' );
                --freq[ right ];
                while( right < 36 && freq[ right ] == 0 )
                    ++right;
            }
        }
    }
    return 0;
}