Bronze Count

[CCC 2024 J3] Bronze Count

题目描述

一次比赛结束后,您可能迫切地想知道有多少参赛者获得了铜牌?

金牌会授予所有获得最高分的参赛者。银牌会授予获得第二高分的所有参赛者。铜牌会授予获得第三高分的所有参赛者。

给定一份参赛选手的成绩列表,请求出获得铜牌所需的分数以及有多少人正好得到这一分数。

输入格式

输入的第一行包含一个正整数 N N N 表示参赛者的数量。

接下来 N N N 行包含一个整数表示一个参赛者的分数。

保证每个分数都在 0 0 0 75 75 75 之间(包含)并且至少存在三个不同的分数。

输出格式

输出一个非负整数 S S S 和一个正整数 P P P 用空格隔开。其中 S S S 是得到铜牌所需要的分数, P P P 是正好得到这个分数的参赛者数量。

样例 #1

样例输入 #1

4
70
62
58
73

样例输出 #1

62 1

样例 #2

样例输入 #2

8
75
70
60
70
70
60
75
70

样例输出 #2

60 2

提示说明

【样例 1 解释】

得到铜牌需要 62 62 62 分并且有一个参赛者正好得到这一分数。

【样例 2 解释】

得到铜牌需要 60 60 60 分并且有两个参赛者正好得到这一分数。

【数据范围】

本题采用捆绑测试。

对于所有数据,保证 1 ≤ N ≤ 2.5 × 1 0 5 1\leq N\leq 2.5\times 10^5 1N2.5×105,分数 s s s 满足 0 ≤ s ≤ 75 0\leq s\leq 75 0s75,至少存在三个不同的分数。

下面的表格显示了 15 15 15 分的分配方案:

分值描述范围
6 6 6分数互不相同并且参赛者数量很少。 N ≤ 50 N \leq 50 N50
7 7 7分数可能存在相同并且参赛者数量很少。 N ≤ 50 N \leq 50 N50
2 2 2分数可能存在相同并且参赛者数量可以很大。 N ≤ 2.5 × 1 0 5 N \leq 2.5 \times 10^5 N2.5×105

代码内容

// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射/*  */
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
ll n,a,sum[80],ans,cnt;

int main()
{
    ll n;
    cin>>n;
    for(ll i=1;i<=n;i++)
    {
        ll a;
        cin>>a;
        sum[a]++;
    }

    ll cnt=0,ans=0;
    for(ll i=75;i>=0;i--)
    {
        if(sum[i]!=0) cnt++;
        if(cnt==3)
        {
            ans=sum[i];
            cnt=i;
            break;
        }
    }
    
    cout<<cnt<<" "<<ans<<endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pretty Boy Fox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值