Pagini recente » Cod sursa (job #2414047) | Cod sursa (job #2311828) | Cod sursa (job #2249472) | Cod sursa (job #855842) | Cod sursa (job #1834039)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ordine.in");
ofstream g("ordine.out");
string str;
int frec[256] = {};
list<char> ls;
bool do_able(){
const int sum = accumulate(frec+'a', frec+'z'+1, 0),
big = *max_element(frec+'a', frec+'z'+1),
left = sum - big;
return left >= big-1; }
bool append(){
for(char ch = 'a'; ch <= 'z'; ++ch){
if(!ls.empty() && ls.back() == ch) continue;
if(frec[ch] == 0) continue;
--frec[ch];
if(do_able()){
ls.push_back(ch);
return true; }
else ++frec[ch]; }
return false; }
int main(){
f >> str;
for(const auto x : str) ++frec[x];
while(append());
for(const auto x : ls) g << x;
return 0; }