/* * yukicoder Frac * 2019.07.11 Kamato02 */ #include typedef struct { float nume; /* 分子 */ float deno; /* 分母 */ float value; /* 実数値 */ } fraction; int main() { int N; /* 入力される値の数 */ int i,j; int wether_do; /* 交換するかどうか */ int n_swap, d_swap; float f_swap; fraction data[20]; scanf("%d", &N); for(i = 0;i < N;i++) { scanf("%f %f", &data[i].nume, &data[i].deno); data[i].value = data[i].nume / data[i].deno; } if(N == 1) { printf("%d %d\n", (int)(data[0].nume), (int)(data[0].deno)); return (0); } /* * 以下バブルソート */ for(i = 0;i < N - 1;) { wether_do = 1; for(j = N - 1;j > i;j--) { if(data[j].value > data[j - 1].value) { n_swap = data[j].nume; d_swap = data[j].deno; f_swap = data[j].value; data[j].nume = data[j - 1].nume; data[j].deno = data[j - 1].deno; data[j].value = data[j - 1].value; data[j - 1].nume = n_swap; data[j - 1].deno = d_swap; data[j - 1].value = f_swap; wether_do = 0; } } if(wether_do == 1) { i = N; } else { i++; } } for(i = 0;i < N;i++) { printf("%d %d\n", (int)(data[i].nume), (int)(data[i].deno)); } return (0); }