Pagini recente » Cod sursa (job #1391664) | Cod sursa (job #620698) | ONIS 2014, Clasament Runda 1 | Cod sursa (job #2056296) | Cod sursa (job #2676772)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("ordine.in");
ofstream fout("ordine.out");
string s, rez;
int fv[130];
int main() {
fin >> s;
for (int i = 0; i < s.size(); ++i)
++fv[s[i]];
for (int i = 'a'; i <= 'z'; ++i) {
int j = i + 1;
while (fv[i] > 0) {
while (j <= 'z' && fv[j] == 0)
++j;
bool adauga = true;
if (rez[rez.size() - 1] != i)
rez += i, adauga = false;
if (j <= 'z')
rez += j;
if (adauga)
rez += i;
--fv[i], --fv[j];
}
}
char el = rez[rez.size() - 1];
for (int i = rez.size() - 1, nr = 0; i > 0; --i) {
if (rez[i] == rez[i - 1]) {
++nr;
rez.erase(i, 1);
}
if (nr > 0 && i < rez.size() - 1 && rez[i] != el && rez[i - 1] != el)
rez.insert(rez.begin() + i, el), --nr, ++i;
}
fout << rez;
return 0;
}