Pagini recente » Cod sursa (job #1650569) | Cod sursa (job #1588879) | Cod sursa (job #1565074) | Cod sursa (job #869840) | Cod sursa (job #186974)
Cod sursa(job #186974)
#include <cstdio>
#include <cstring>
int A[30],V[30];
char S[1000002];
void solve()
{
int N = strlen(S),i,last = 45;
for(i=0; i<N; i++)
A[S[i] - 'a']++;
for(i=0; i<N; i++)
{
bool ok = false;
for(int j=0; j<='z'-'a'; j++)
if(V[j] == ((N - i + 1) >> 1) + 1 && A[j])
{
printf("%c",j+'a');
V[last = j]++;
A[j]--;
ok = true;
}
if(ok) continue;
for(int j=0; j<='z'-'a'; j++)
if(A[j] && j!=last)
{
A[last = j]--;
V[j]++;
printf("%c",j+'a');
break;
}
}
}
int main()
{
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
gets(S);
solve();
}