PTA:7-6寮は誰が一番高いですか.

9609 ワード

学校はバスケットボール選手を選抜し、寮ごとに最大4人がいる.寮のリストを出して、寮ごとに一番高い学生を見つけてください.身長height、体重weightなど、学生クラスStudentを定義します.
入力フォーマット:まず整数n(1<=n<=100000)を入力し、n人の同級生を表す.n行入力に続いて、各行フォーマットは:寮番号、name、height、weight.寮番号の区間は[09999999]で、nameはアルファベットで構成され、長さは16未満、height、weightは正の整数である.
出力フォーマット:寮番号によって小さいから大きいまで並べ替えて、各寮の身長が最も高い同級生の情報を出力します.テーマは寮ごとに身長が一番高い学生が一人しかいないことを保証します.
入力サンプル:7,000,000,000 Tom 175,120,0001 Jack 180,130,0001 Hale 160,140,000,000 Marry 160,120,120,000 Jerry 165,110,0003 ETAF 183,145,0001 Mickey 170,115
出力サンプル:00000 Tom 175 120 00001 Jack 180 130 00003 ETAF 183 145
ネットをたたいてやっとmapのやり方があることを知って、以下は私のコードを捧げます
#include
using namespace std;
struct people
{
	int num;
	char name[20];
	int h;
	int w;
};
void print(int n,char *name,int height,int weight)
{
	printf("%06d %s %d %d
"
,n,name,height,weight); // , } int main() { int n; int count=0; cin>>n; getchar(); struct people p[100]; struct people max[100]; for(int i=0;i<n;i++) { cin>>p[i].num>>p[i].name>>p[i].h>>p[i].w; if(i==0)// max[count++]=p[i]; else { int flag=0; int newone=1;// for(int j=0;j<count;j++) { if(p[i].num==max[j].num) { newone=0; if(p[i].h>max[j].h)// max max[j]=p[i]; break; } } if(newone)// max { max[count++]=p[i]; } } } for(int i=0;i<count;i++) print(max[i].num,max[i].name,max[i].h,max[i].w); }