Pagini recente » Cod sursa (job #1627491) | Cod sursa (job #1869284) | Cod sursa (job #1507615) | Cod sursa (job #2887077) | Cod sursa (job #2393181)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream fin("ordine.in");
ofstream fout("ordine.out");
char sir[256], sirAnagrama[256], aux[2];
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) {
aux[0] = char(i + 'a');
aux[1] = NULL;
strcat(sirAnagrama, aux);
aux[0] = char(nextChar(i) + 'a');
aux[1] = NULL;
strcat(sirAnagrama, aux);
aparitii[i]--;
aparitii[nextChar(i)]--;
if (!aparitii[i] && nextChar(nextChar(i)) != -1) {
aux[0] = char(nextChar(nextChar(i)) + 'a');
aux[1] = NULL;
strcat(sirAnagrama, aux);
aparitii[nextChar(nextChar(i))]--;
}
}
else
if (aparitii[i]) {
aux[0] = char(i + 'a');
aux[1] = NULL;
strcat(sirAnagrama, aux);
}
fout << sirAnagrama;
}
int main() {
fin >> sir;
for (int i = 0; i <= strlen(sir); i++)
aparitii[sir[i] - 'a']++;
anagrama();
return 0;
}