Cod sursa(job #755489)

Utilizator vendettaSalajan Razvan vendetta Data 5 iunie 2012 22:04:02
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>

using namespace std;

#define nmax 1000005

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

string s;
int ap[nmax];

void citeste(){

    f >> s;

}

void rezolva(){

    for(int i=0; i<s.size(); i++) ++ap[s[i]];

    int ultimul = 0;
    for(int i=0; i<s.size(); i++){
        int ok = 0;
        for(int j='a'; j<='z'; j++){
            if (ap[j] == (((s.size() - i)/2)+1) ){//daca am un caracter care apare de nr_care_maitrebuie puse / 2 + 1 sunt obligat sa il pun
                g << char(j);
                ultimul = j;
                --ap[j];
                ok = 1;
                break;
            }
        }
        if (ok) continue;
        for(int j='a'; j<='z'; j++){
            if (j != ultimul && ap[j] != 0){
                g << char(j);
                --ap[j];
                ultimul = j;
                break;
            }
        }
    }

}

int main(){

    citeste();
    rezolva();

    f.close();
    g.close();

    return 0;

}