為了用事實(shí)說(shuō)明挖掘機(jī)技術(shù)到底哪家強(qiáng),PAT 組織了一場(chǎng)挖掘機(jī)技能大賽?,F(xiàn)請(qǐng)你根據(jù)比賽結(jié)果統(tǒng)計(jì)出技術(shù)最強(qiáng)的那個(gè)學(xué)校。
輸入格式:
輸入在第 1 行給出不超過(guò) 10^?5的正整數(shù) N,即參賽人數(shù)。隨后 N 行,每行給出一位參賽者的信息和成績(jī),包括其所代表的學(xué)校的編號(hào)(從 1 開(kāi)始連續(xù)編號(hào))、及其比賽成績(jī)(百分制),中間以空格分隔。
輸出格式:
在一行中給出總得分最高的學(xué)校的編號(hào)、及其總分,中間以空格分隔。題目保證答案唯一,沒(méi)有并列。
輸入樣例:
6
3 65
2 80
1 100
2 70
3 40
3 0
輸出樣例:
2 150
思路:
這個(gè)題目名字起得很風(fēng)騷,但是題目卻很簡(jiǎn)單,由于題目中學(xué)校的序號(hào)是從1開(kāi)始連續(xù)編號(hào),只要定義個(gè)長(zhǎng)度為105的數(shù)組,對(duì)下標(biāo)為序號(hào)的數(shù)字進(jìn)行求和,然后找到總分最大的數(shù)字輸出序號(hào)與總分即可。
代碼:
//1032 挖掘機(jī)技術(shù)哪家強(qiáng)
#include<iostream>
using namespace std;
int main()
{
int N;
cin >> N;
int grade[100001] = { 0 };
int school, temp, maxschool=0;
for (int i = 0; i < N; i++)
{
scanf("%d %d", &school, &temp);
grade[school] += temp;
maxschool = school > maxschool ? school : maxschool;
}
int max = 0;
int maxcount = 0;
for (int i = 0; i <= maxschool; i++)
{
if (max <= grade[i])
{
max = grade[i];
maxcount = i;
}
}
cout << maxcount << ' ' << max << endl;
return 0;
}