Note
Code1
- 一开始for循环里用的是小于答案错误…
- 改成小于等于 √
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n,edd;
cin>>n;
int num[n+1];
for(int i=1;i<=n;i++)
scanf("%d",&num[i]);
sort(num+1,num+n+1,cmp);
for(edd=1;edd<=n;edd++){
if(num[edd]<=edd) break;
}
cout<<edd-1;
return 0;
}
Code2
#include<bits/stdc++.h>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n,edd,min,index,cnt;
cin>>n;
int num[n+1];
for(int i=1;i<=n;i++)
scanf("%d",&num[i]);
sort(num+1,num+n+1);
index=1,min=num[1],cnt=n,edd=0;
for(int i=1;i<=n;i++){
while(min<=i){
index++;
min=num[index];
cnt--;
}
if(cnt<i) break;
else if(min>i&&cnt>=i) edd++;
}
cout<<edd;
return 0;
}