Cod sursa(job #530451)

Utilizator darrenRares Buhai darren Data 7 februarie 2011 20:04:45
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;

char original[10002], last = -1;
int size, F[26];

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

    fin.getline(original, sizeof(original));
    for (int i = 0; original[i] != '\0'; ++i, ++size)
        ++F[original[i] - 'a'];

    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)
                {
                    fout << char(j + 'a');
                    --F[j];
                    last = j;
                    break;
                }
        }
    }

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