Pagini recente » Cod sursa (job #122821) | Cod sursa (job #2519224) | Cod sursa (job #2305848) | Cod sursa (job #2528271) | Cod sursa (job #2848444)
#include <bits/stdc++.h>
using namespace std;
int vf[30];
char v[1000001];
int main(void){
ofstream cout("ordine.out");
ifstream cin("ordine.in");
char c;
int n = 0;
while(cin >> c){
n++;
vf[c-'a']++;
}
v[0] = '+';
for(int i = 1;i<=n;i++){
bool ok = 0;
//determin daca exista un caracter a carui frcventa este mai mare decat numarul de caractere care trebuie afisate / 2;
for(int j = 0;j<=26;j++){
if(vf[j] > (n-i+1)/2 && 'a'+ j != v[i-1]){
v[i] = (char)'a'+j;
ok = 1;
vf[j]--;
break;
}
}
if(!ok){
for(int j = 0;j<=26;j++){
if(vf[j] != 0 && 'a'+ j != v[i-1]){
v[i] = j+'a';
vf[j]--;
break;
}
}
}
}
for(int i = 1;i<=n;i++){
cout << v[i];
}
}