玄学题,一开始我居然看成了单调队列,emmmm
贪心:每个人的最优的分时a[i]+n;
其余要想他得到冠军,就要比他高分的人获得的最大得分是a[i]+n,要让初始分数最高的人拿到最低的排名,证明只可意会不可言传,OI贪心就是比较玄学
//洛谷P2777
//#include<bits/stdc++.h>
#include <map>
#include <set>
#include <ctime>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include<algorithm>
#include<cmath>
#include<stdlib.h>
using namespace std;
int n,a[300001],maxx,ans,c[300001];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
c[i]=a[i]+n-i+1;
for(int i=1;i<=n;i++)
maxx=max(maxx,c[i]);
for(int i=1;i<=n;i++)
{
if(a[i]+n>=maxx)
ans++;
}
cout<<ans<< endl;
}