学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有私有成员身高height,体重weight等。
Input Specification:
题目首先输入一个整型数n (1<=n<=1000000),表示n位同学,紧跟着n行输入,每一行格式为:宿舍号,name,height,weight。宿舍号为[0,999999], name 由字母组成,长度小于16,height,weight为正整数。按宿舍号从小到大排序,输出每间宿舍身高最高的同学信息。题目保证每间宿舍只有一位身高最高的同学。
Output Specification:
对于每一间宿舍,请找出身高最高的同学,并输出其信息。输出顺序按宿舍号从小到大排序。
Sample Input:7 000000 Tom 175 120 000001 Jack 180 130 000001 Hale 160 140 000000 Marry 160 120 000000 Jerry 165 110 000003 ETAF 183 145 000001 Mickey 170 115Sample Output:
000000 Tom 175 120 000001 Jack 180 130 000003 ETAF 183 145
#include<iostream>
#include<iomanip>using namespace std;
int heighest[1000000];
class student
{
int weight;
char name[16];
public:
int heigh;
int roomnum;
void input()
{
cin>>roomnum>>name>>heigh>>weight;
}
void output()
{
cout<<setfill('0')<<setw(6)<<roomnum<<" "<<name<<" "<<heigh<<" "<<weight<<endl;
}
};
int main()
{
int n,i,j,len,change,flag;
cin>>n;
student *p;
p=new student[n+1];
len=1;
if(p==NULL)
{cout<<"Allocate memory failure!"<<endl;return 0;}
p[1].input();
heighest[p[1].roomnum]=1;
for(i=2;i<=n;i++)
{
p[i].input();
if(heighest[p[i].roomnum]==0)
{
heighest[p[i].roomnum]=i;
len++;
}
else
{
if(p[i].heigh>p[heighest[p[i].roomnum]].heigh)
heighest[p[i].roomnum]=i;
}
}
flag=0;
for(i=0;i<1000000;i++)
{
if(heighest[i]==0) continue;
else
{
p[heighest[i]].output();
flag++;
}
if(flag==len) break;
}
delete []p;
return 0;
}
终于不超时了︿( ̄︶ ̄)︿︿( ̄︶ ̄)︿