Cod sursa(job #1447528)

Utilizator florinasAsavei florinas Data 4 iunie 2015 17:33:09
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream f("ordine.in");
ofstream g("ordine.out");

int n , v[50] , last;
char Sir[1000005];

int main()
{
    int  ok ;
    f >> Sir;
    n = strlen(Sir);
    for(int i = 0 ; i < n ; ++i){
        ++v[Sir[i] - 'a' + 1];
    }
    for(int i = 1 ; i <= n ; ++i){
        ok = 0 ;
        for(int j = 1 ; j <= 'z' - 'a' + 1 ; ++j){
            if(v[j] == (n - i + 1) / 2 + 1){
                char ch = j + 'a' - 1;
                g << ch ;
                last = j;
                --v[j];
                ok = 1;
                break;
            }
        }
        if(ok == 0){
            for(int j = 1 ; j <= 'z' - 'a' + 1 ; ++j){
                if(v[j] > 0 && j != last){
                    char ch = j + 'a' - 1;
                    g << ch ;
                    last = j;
                    --v[j];
                    break;
                }
            }
        }
    }
    return 0;
}