Cod sursa(job #1332843)

Utilizator matei_cChristescu Matei matei_c Data 2 februarie 2015 15:02:10
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#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 ;

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 ;
    }

    int inainte = -1 ;
    int ultimul = -1 ;

    for(int i = 0; i < N; ++i )
    {
        int cine = 0 ;

        while( v[cine] == 0 || cine == ultimul )
            ++cine ;

        inainte = ultimul ;
        ultimul = cine ;

        for(cine = ultimul + 1; cine < maxalfa; ++cine)
            if( v[cine] == ( N - i ) / 2 + 1 && cine != inainte)
                ultimul = cine ;

        --v[ultimul] ;

        ch = 'a' + ultimul ;

        cout << ch ;
    }

	return 0 ;
}