結構體-*老--質價比

HowieLee59發表於2019-03-24

Problem Description

給出n件物品,每件物品有質量和價格兩種屬性。你要做的是按質量升序排序,若質量相同則按價格降序排序。

Input

多組輸入。每組先輸入一個正整數n(1<=n && n <= 100),代表有n件物品。接下來的一行有n個正整數Wi(1<= Wi && Wi <= 10000),代表每件物品的質量。再接下來的一行有n個正整數Pi(1 <= Pi && Pi <= 10000),代表每件物品的價格。

Output

對於每組資料輸出n行,每行兩個數Wi,Pi。順序為題目描述所要求。

Sample Input

3
1 2 2
3 2 3

Sample Output

1 3
2 3
2 2
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct student{
    int quality;
    int price;
}st[100000],temp;

int main(){
    int a;
    while(~scanf("%d",&a)){
        for(int i = 0 ; i < a ; i++){
            scanf("%d",&st[i].quality);
        }

        for(int i = 0 ; i < a ; i++){
            scanf("%d",&st[i].price);
        }

        int t = 0;
        for(int i = 0 ; i < a - 1 ; i++){
            for(int j = 0 ; j < a - 1 - i ; j++){
                if(st[j].quality > st[j + 1].quality){
                    temp = st[j];
                    st[j] = st[j + 1];
                    st[j + 1] = temp;
                }
                if(st[j].quality == st[j + 1].quality){
                    if(st[j].price < st[j + 1].price){
                        t = st[j].price;
                        st[j].price = st[j + 1].price;
                        st[j + 1].price = t;
                    }
                }
            }
        }

        for(int i = 0 ; i < a ; i++){
            printf("%d %d\n",st[i].quality,st[i].price);
        }
    }
    return 0;
}

 

相關文章