編程團體賽的規則為:每個參賽隊由若干隊員組成;所有隊員獨立比賽;參賽隊的成績為所有隊員的成績和;成績最高的隊獲勝。
現給定所有隊員的比賽成績,請你編寫程序找出冠軍隊。
輸入格式:
輸入第一行給出一個正整數N(<=10000),即所有參賽隊員總數。隨后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
#include <iostream>#include <stdio.h> using namespace std;struct student{ int TeamNo; int No; int Grade;};int Search(int n ,int* a,int teamno){ int flag = 0; for ( int i = 1 ; i <= n ; i++){ if ( teamno == a[i]){ flag = i; break; } } return flag;}int main(){ int num; cin>>num; struct student team[num+1]; int teamno[num+1] = {0}; int sum[num+1] = {0}; int cnt = 1; int Max_index; for ( int i = 1 ; i <= num ; i++){ cin>>team[i].TeamNo>>team[i].No>>team[i].Grade; int index = Search(num,teamno,team[i].TeamNo); if ( index == 0){ teamno[cnt] = team[i].TeamNo; sum[cnt] += team[i].Grade; if ( sum[0] < sum[cnt]){ sum[0] = sum[cnt]; Max_index = cnt; } cnt++; }else{ sum[index] += team[i].Grade; if ( sum[0] < sum[index]){ sum[0] = sum[index]; Max_index = index; } } } cout<<teamno[Max_index]<<" "<<sum[0]; return 0; }新聞熱點
疑難解答