#include <stdio.h>
#include <stdlib.h>
typedef struct{
int c;
int prob;
}Data;
int comp(const void *, const void *);
void put1(int);
int main(){
int c;
int i;
int prob;
int size;
Data *data;
printf("入力個数 > ");
scanf("%d",&size);
while (getchar() != '\n');
putchar('\n');
data = (Data*)malloc(sizeof(Data)*size);
for(i = 0;i < size;i++){
printf("文字 > ");
data[i].c = getchar();
printf("確率 > ");
scanf("%d",&data[i].prob);
while (getchar() != '\n');
putchar('\n');
}
qsort(data, size, sizeof(Data), comp);
for(i = 0;i < size;i++){
printf("%c:",data[i].c);
put1(i);
if(i != size-1) putchar('0');
putchar('\n');
}
free(data);
return 0;
}
void put1(int times){
int i;
for(i = 0;i < times;i++) putchar('1');
}
int comp(const void *a, const void *b){
return (*(Data*)b).prob - (*(Data*)a).prob;
}