PAT甲级1117 Eddington Number (25分)

Posted ldudxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT甲级1117 Eddington Number (25分)相关的知识,希望对你有一定的参考价值。

题意:

输入一个正整数N(<=100000),接着输入N个非负整数。输出最大的整数E使得有至少E个整数大于E。

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int a[100007];
 5 int num[100007];
 6 map<int,int>mp;
 7 int main(){
 8     ios::sync_with_stdio(false);
 9     cin.tie(NULL);
10     cout.tie(NULL);
11     int n;
12     cin>>n;
13     int cnt=0;
14     for(int i=1;i<=n;++i)
15         cin>>a[i];
16     sort(a+1,a+1+n);
17     for(int i=1;i<=n;++i){
18         if(!mp[a[i]])
19             mp[a[i]]=++cnt;
20         ++num[mp[a[i]]];
21     }
22     for(int i=cnt-1;i;--i)
23         num[i]+=num[i+1];
24     int ans=0;
25     for(int i=n;i;--i){
26         int pos=upper_bound(a+1,a+1+n,i)-a;
27         if(pos<=n&&num[mp[a[pos]]]>=i){
28             ans=i;
29             break;
30         }
31     }
32     cout<<ans;
33     return 0;
34 }

 

以上是关于PAT甲级1117 Eddington Number (25分)的主要内容,如果未能解决你的问题,请参考以下文章

1117 Eddington Number(25)

1117 Eddington Number (二分)

1117 Eddington Number (25 分)难度: 一般 / 知识点: 二分

pat甲级75分在啥水平

pat甲级没做出来没有分吗

pat甲级60分啥水平