查看原题目请点我
解题思路:我记得我当时上机考这道题的时候特别幸运,因为我根本就没怎么读懂题就拿了24分,只有最后一个测试点那一分没拿到。

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100005;
int arr[maxn]={0};
bool cmp(int a,int b){
    return a>b;
}
int main(){
    int N;
    scanf("%d",&N);
    int cnt=0;
    for(int i=1;i<=N;i++){
        scanf("%d",&arr[i]);
    } 
    sort(arr+1,arr+N+1,cmp);
    for(int i=1;i<=N;i++){
        if(arr[i]>i) cnt++;
    }
    printf("%d\n",cnt);
    return 0;
} 

24分的代码

#include<cstdio>
int main(){
    int N;
    scanf("%d",&N);
    int cnt=0,num;
    for(int i=0;i<N;i++){
        scanf("%d",&num);
        if(num>i+1) cnt++;
    } 
    printf("%d\n",cnt);
    return 0;
}