Pagini recente » Cod sursa (job #1514481) | Cod sursa (job #2008273) | Cod sursa (job #722544) | Istoria paginii runda/simulare-oni-2019-cls10-ziua1/clasament | Cod sursa (job #106721)
Cod sursa(job #106721)
Utilizator |
Andrei Grigorean wefgef |
Data |
18 noiembrie 2007 22:00:06 |
Problema |
Ordine |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
0.7 kb |
#include <cstdio>
#include <cstring>
const int Nmax = 1000005;
int N;
char s[Nmax];
int v[26];
char ret[Nmax];
int main() {
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
scanf("%s", s);
N = strlen(s);
for (int i = 0; i < N; ++i)
++v[s[i]-'a'];
for (int i = 1; i <= N; ++i) {
int best = 0, poz = -1;
for (int j = 0; j < 26; ++j)
if (v[j] > best) {
best = v[j];
poz = j;
}
if (best > N/2) {
ret[i] = poz;
--v[poz];
}
else
for (int j = 0; j < 26; ++j)
if (v[j] && ((i == 1) || (j != v[i-1]))) {
ret[i] = j;
--v[j];
break;
}
}
for (int i = 1; i <= N; ++i)
printf("%c", ret[i]+'a');
}