题解:P14453 [ICPC 2025 Xi'an R] Grand Voting

· · 题解

题目传送门

思路

签到题。

要使 s 最大,也就是让赞成票最多,反对票最少,容易想到将 a_i 从小到大排序即可,接着再模拟一遍,统计 s 的值。

最小同理,把升序改为降序即可。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100005],s;
signed main(){
    cin>>n;
    for(int i=1;i<=n;i++)  scanf("%lld",&a[i]);
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
    {
        if(s>=a[i])  s++;
        else  s--;
    }
    cout<<s<<" ";
    s=0;
    for(int i=n;i>=1;i--)
    {
        if(s>=a[i])  s++;
        else  s--;
    }
    cout<<s;
    return 0;
}