题解 | #最大的两个数#
最大的两个数
https://www.nowcoder.com/practice/7385949943264a9fa4348cbd43e6e00c
1.dev过第二个例子就是对的,牛客居然通不过,抽象
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct{
int x;
int y;
}number;
bool cmp(number a,number b)
{
if(a.x>b.x)
return true;
return false;
}
bool cmb(number c,number d)
{
if(c.y<d.y)
return true;
return false;
}
int main()
{
int a[4][5];
number A[4],B[4],C[4],D[4],E[4];
while(cin>>a[0][0]>>a[0][1]>>a[0][2]>>a[0][3]>>a[0][4])
{
A[0].x=a[0][0];B[0].x=a[0][1];
C[0].x=a[0][2];D[0].x=a[0][3];E[0].x=a[0][4];
A[0].y=0;B[0].y=0;E[0].y=0;D[0].y=0;E[0].y=0;
for(int i=1;i<4;i++)
{
A[i].y=i;B[i].y=i;C[i].y=i;D[i].y=i;E[i].y=i;
for(int j=0;j<5;j++)
{
cin>>a[i][j];
if(j==0)
A[i].x=a[i][j];
if(j==1)
B[i].x=a[i][j];
if(j==2)
C[i].x=a[i][j];
if(j==3)
D[i].x=a[i][j];
if(j==4)
E[i].x=a[i][j];
}
}
//先对整体排序,再对前两个排序,因为如果前两个相等,那排序与否无所谓,如果不相等,需要根据行号再进行排序,行号小的在前
stable_sort(A,A+4,cmp);stable_sort(B,B+4,cmp);
stable_sort(C,C+4,cmp);stable_sort(D,D+4,cmp);stable_sort(E,E+4,cmp);
sort(A,A+2,cmb);sort(B,B+2,cmb);sort(C,C+2,cmb);
sort(D,D+2,cmb);sort(E,E+2,cmb);
for(int i=0;i<2;i++)
cout<<A[i].x<<" "<<B[i].x<<" "<<C[i].x<<" "<<D[i].x<<" "<<E[i].x<<endl;
}
return 0;
}