PAT乙级题库“傻瓜”题解之编程团体赛
编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。
现给定所有队员的比赛成绩,请你编写程序找出冠军队。
输入格式:
输入第一行给出一个正整数 N(≤104),即所有参赛队员总数。随后 N 行,每行给出一位队员的成绩,格式为:队伍编号-队员编号 成绩
,其中队伍编号
为 1 到 1000 的正整数,队员编号
为 1 到 10 的正整数,成绩
为 0 到 100 的整数。
输出格式:
在一行中输出冠军队的编号和总成绩,其间以一个空格分隔。注意:题目保证冠军队是唯一的。
输入样例:
6
3-10 99
11-5 87
102-1 0
102-3 100
11-9 89
3-2 61
输出样例:
11 176
1 #include<iostream> 2 #include<stdio.h> 3 #include<string> 4 using namespace std; 5 int main() 6 { 7 int n; 8 cin>>n; 9 struct students{ 10 string number; 11 int score; 12 int flag; 13 }; 14 students sts[n]; 15 for(int i=0;i<n;i++) 16 { 17 cin>>sts[i].number; 18 19 int p=0; 20 string str; 21 while(sts[i].number[p]!='-') 22 { 23 str+=sts[i].number[p]; 24 p++; 25 } 26 sts[i].number=str; 27 cin>>sts[i].score; 28 } 29 // for(int i=0;i<n;i++) 30 // cout<<sts[i].number<<" "<<sts[i].score<<endl; 31 int max=0; 32 string strs; 33 for(int i=0;i<n;i++) 34 { 35 for(int j=i+1;j<n;j++) 36 if(sts[i].number==sts[j].number&&sts[j].flag==0) 37 { 38 sts[i].score+=sts[j].score; 39 sts[j].flag=1; 40 } 41 if(sts[i].score>max) 42 { 43 max=sts[i].score; 44 strs=sts[i].number; 45 } 46 } 47 cout<<strs<<" "<<max<<endl; 48 return 0; 49 }
这是用结构体的解法