Cod sursa(job #530109)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 6 februarie 2011 21:06:45
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
# include <fstream>
  using namespace std;
    std :: ifstream f ("ordine.in");
	std :: ofstream g ("ordine.out");
	char c;
	int a[200], nr;
	inline bool litera (char c){
		if (c >= 'a' && c <= 'z') return true;
		return false;
	}
	int main (){
		while (litera (c = f.get ())){
			++a[c];
			++nr;
		}
		int lt;
		for (; nr > 0; ){
			if (a['a' - 0] == 0) a['a' - 0] = 2000000000;
			int la = 'a';
			for (int i = 98; i <= 123; ++i)
				if (a[i] > 0 && ((la == lt && a[i] > 0 && a[i] < 2000000000) || ( (nr >> 1) < a[i] && lt != i && a[i] > 0 && a[i] < 2000000000) || a[la] == 2000000000))
					la = (char) i;
			g << (char)la;
			--a[la];
			--nr;
			lt = la;
		}
		g << '\n';
		g.close ();
		return 0;
	}