小兔子有n个果园,果园里有许多果树,有苹果树,芒果树,香蕉树,李子树,无花果树。
终于到了丰收的季节,小兔子从每个果园采了许多的水果,现在小兔子想给每个果园的产量排序。
因为小兔子爱吃芒果,所以按芒果的数量从大到小排序,如果芒果的数量相同,那就按照其他水果的总数量从小到大排序。
不会存在芒果数量相同且其他水果的总数量相同的情况。
输入
第一行输入一个n,代表n个果园(1<=n<=10)
接下来n行,每行五个数,分别代表小兔子从果园里采摘的苹果数量,芒果数量,香蕉数量,李子数量,无花果数量
每个水果的数量不超过10,且没有负数。
输出
输出n个果园产量排序后的结果
样例输入 复制
5
1 2 3 4 5
1 3 3 4 5
1 4 2 2 2
1 1 1 1 1
1 4 1 1 1
样例输出 复制
1 4 1 1 1
1 4 2 2 2
1 3 3 4 5
1 2 3 4 5
1 1 1 1 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n = 0;
scanf("%d", &n);
int** arr1 = (int**)malloc(sizeof(int*) * (n + 1));
int* arr2 = (int*)malloc(sizeof(int) * (n + 1));
for (int i = 0; i < n; i++)
{
arr2[i] = 0;
}
for (int i = 0; i < n; i++)
{
arr1[i] = (int*)malloc(sizeof(int) * 6);
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 5; j++)
{
scanf("%d", &arr1[i][j]);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 5; j++)
{
if (j != 1)
{
arr2[i] += arr1[i][j];
}
}
}
for (int j = 0; j < n; j++)
{
int max = j;
int v = j;
for (int i = j+1; i < n; i++)
{
if (arr1[max][1] < arr1[i][1])
{
max = i;
}
if ((arr1[max][1] == arr1[i][1]) && (arr2[max] > arr2[i]))
{
max = i;
}
}
for (int i = 0; i < 5; i++)
{
int tmp = arr1[max][i];
arr1[max][i] = arr1[v][i];
arr1[v][i] = tmp;
}
}
printf("\n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ", arr1[i][j]);
}
printf("\n");
}
for (int i = 0; i < n; i++)
{
free(arr1[i]);
}
free(arr1);
free(arr2);
return 0;
}