c 1047 编程团体赛 (20 分)


原题

https://pintia.cn/problem-sets/994805260223102976/problems/994805277163896832

代码

#include 
#include 
using namespace std;

int team[1001]={0};
int main()
{
    int N;
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        int teamNum,memberNum,grade;
        scanf("%d-%d %d",&teamNum,&memberNum,&grade);
        team[teamNum]+=grade;
    }

    int num,max=0;
    for (int i = 0; i < 1001; i++)
    {
        if(team[i]!=0&&team[i]>=max){
            max=team[i];
            num=i;
        }
    }
    cout<

参看别人简化后

#include 
using namespace std;

int team[1001] = {0};
int main()
{
    int N;
    cin >> N;
    int max = 0, maxid = 0; //注意max值要单独变量存储,不可以在数组里找
    for (int i = 0; i < N; i++)
    {
        int teamNum, memberNum, grade;
        scanf("%d-%d %d", &teamNum, &memberNum, &grade);
        team[teamNum] += grade;
        if (team[teamNum] >= max)//边输入边判断
        {
            max = team[teamNum];
            maxid = teamNum;
        }
    }
    cout << maxid << " " << max;
    return 0;
}