Pagini recente » Cod sursa (job #2079534) | Cod sursa (job #2977598) | Cod sursa (job #615513) | Cod sursa (job #1556370) | Cod sursa (job #2850065)
#include <iostream>
#include <fstream>
using namespace std;
char v[1000005], ch;
int fr[256], n, i, j;
bool ok;
int main()
{
ifstream in("ordine.in");
ofstream out("ordine.out");
while (in >> ch){
fr[ch]++;
n++;
}
v[0] = '+';
for (i = 1; i <= n; i++){
/// determin litera a carei aparitii este mai mare ///
/// decat nr de pozitii ce trebuie completat / 2 ///
ok = false;
for (j = 'a'; j <= 'z'; j++){
if (fr[j] > (n - i + 1) / 2 && j != v[i - 1]){
ch = j;
ok = true;
break;
}
}
if (ok){
v[i] = ch;
fr[ch]--;
}
else /// trb sa pun cel mai mic caracter != v[i - 1] ///
for (j = 'a'; j <= 'z'; j++)
{
if (fr[j] && j != v[i - 1])
{
v[i] = j;
fr[j]--;
break;
}
}
}
for (i = 1; i <= n; i++)
out << v[i];
return 0;
}