版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Neo233/article/details/88774872
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;
}