Cod sursa(job #2393166)

Utilizator noperestayadelin mihoc noperestay Data 30 martie 2019 22:48:49
Problema Ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <cstring>
#include <algorithm>
#include <fstream>

using namespace std;

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

char sir[256];
int aparitii[28], precedent;

int nextChar(int i) {
	for (int j = i + 1; j <= 25; j++)
		if (aparitii[j])
			return j;
	return -1;
}

void anagrama() {
	for (int i = 0; i <= 25; i++)
		if (nextChar(i) != -1)
			while (aparitii[i] && nextChar(i) != -1) {
				fout << char(i + 'a');
				fout << char(nextChar(i) + 'a');
				aparitii[i]--;
				aparitii[nextChar(i)]--;
				if (!aparitii[i] && nextChar(nextChar(i)) != -1) {
					fout << char(nextChar(nextChar(i)) + 'a');
					aparitii[nextChar(nextChar(i))]--;
				}
			}
		else
			if (aparitii[i])
				fout << char(i + 'a');
}

int main() {

	fin >> sir;
	for (int i = 0; i <= strlen(sir); i++)
		aparitii[sir[i] - 'a']++;

	anagrama();

	return 0;
}