Pagini recente » Cod sursa (job #2727920) | Cod sursa (job #1887317) | Cod sursa (job #1834225) | Cod sursa (job #914807) | Cod sursa (job #1413001)
#include <stdio.h>
#define BAZA 26
#define MAXN 1000000
int fr[BAZA];
char s[MAXN + 1];
inline void next(int *p1, int p2){
while(*p1 < BAZA && (fr[*p1] == 0 || *p1 == p2))
(*p1)++;
}
int main(){
FILE *in = fopen("ordine.in", "r");
fgets(s, MAXN + 1, in);
fclose(in);
int i, dr = 0;
for(i = 0; s[i] != '\n'; i++)
fr[s[i] - 'a']++;
int p1 = 0, p2 = 1;
for(i = 0; s[i] != '\n'; i++){
if(fr[p2] == 0)
next(&p2, p1);
if(fr[p1] == 0)
next(&p1, p2);
if(i & 1){
s[dr] = p2 + 'a';
dr++;
fr[p2]--;
}
else{
s[dr] = p1 + 'a';
dr++;
fr[p1]--;
}
}
for(i = 0; i < BAZA; i++){
if(fr[i] != 0){
s[dr] = i + 'a';
dr++;
}
}
s[dr] = '\0';
FILE *out = fopen("ordine.out", "w");
fputs(s, out);
fclose(out);
return 0;
}