Cod sursa(job #945841)

Utilizator Ionut228Ionut Calofir Ionut228 Data 3 mai 2013 00:00:33
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>

using namespace std;

char s;
int size, last, f[27];

int main()
{
    ifstream fin("ordine.in");
    ofstream fout("ordine.out");

    size = 0;
    while (fin.get(s))
        if (s >= 'a' && s <= 'z')
        {
            ++f[s - 'a'];
            ++size;
        }

    last = -1;
    for (int i = 1; i <= size; ++i)
    {
        int setnow = -1;
        for (int j = 0; j < 26; ++j)
            if (last != j && f[j] == (size - i  + 1) / 2 + 1)
            {
                setnow = j;
                break;
            }

        if (setnow != -1)
        {
            fout << char(setnow + 'a');
            --f[setnow];
            last = setnow;
        }
        else
        {
            for (int j = 0; j < 26; ++j)
                if (last != j && f[j])
                {
                    fout << char(j + 'a');
                    --f[j];
                    last = j;
                    break;
                }
        }
    }

    fin.close();
    fout.close();
}