Pagini recente » Cod sursa (job #698670) | Cod sursa (job #2467049) | Cod sursa (job #2315482) | Cod sursa (job #1458951) | Cod sursa (job #128169)
Cod sursa(job #128169)
//#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f1("ordine.in");
ofstream f2("ordine.out");
long k = 0, i, j, min = 0;
char c, vecbun[1000001] = {};
unsigned long s[29] = {};
c = f1.get();
while (c != '\n') {
++s[c - 97];
c = f1.get();
}
f.close();
for (j = 0; j < 28; ) {
if (s[j]) {
vecbun[k] = j + 97;
--s[j];
k += 2;
}
else {
++j;
for (i = min; ; ++i)
if ( !vecbun[i] ) {
min = i;
k = i;
break;
}
}
}
k = 0;
for (i = min + 1; ; i += 2)
if (vecbun[i]) ++k;
else {
c = vecbun[i - 2];
break;
}
j = 0;
//vecbun[min] = 0;
//f.open("ordine.out", ios::out);
//cout << vecbun << endl;
if (k) {
for (i = min - 1; i >= 0; i -= 2)
if (vecbun[i] != c) {
j = i + 1;
break;
}
if (j == 0) f << c << vecbun << endl;
else {
for (i = 0; i <= j - k; ++i) f << vecbun[i];
j = j - k;
for (i = 0; i < k; ++i)
f << c << vecbun[++j];
for (i = j + 1; i < min; ++i)
f << vecbun[i];
f << endl;
}
}
else f << vecbun << endl;
f1.close();
f2.close();
//cout << vecbun << endl;
return 0;
}