Cod sursa(job #1874769)

Utilizator robx12lnLinca Robert robx12ln Data 10 februarie 2017 13:36:48
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("ordine.in");
ofstream fout("ordine.out");
int n, poz, f[30];
char s[1000005], sol[1000005], best;
int main(){
    fin >> s;
    n = strlen(s);
    for( int i = 0; i < n; i++ ){
        f[ s[i] - 'a' ]++;
    }
    poz = 0;
    while( poz < n ){
        best = ' ';
        for( int i = 0; i <= 26; i++ ){
            if( f[i] != 0 ){
                if( ( poz == 0 && best == ' ' ) || ( best == ' ' && (char)( 97 + i ) != sol[poz - 1] ) ){
                    best = (char)( 97 + i );
                }
                if( f[i] == ( n - poz ) / 2 + 1 ){
                    best = (char)( 97 + i );
                }
            }
        }
        sol[poz] = best;
        f[best - 'a']--;
        poz++;
    }
    fout << sol;
    return 0;
}