贪心题,记得要特判一下没有一级饲料的情况,否则会WA #9 #10 2个点。然后不要像本苟蒻一样比赛的时候一不小心给数组的大小少打了个0,导致25%,其余段错误。

#include <iostream>
#include <algorithm>
using namespace std;
int n;long long int m,a;long long int feeds[100010];int ans;
int main()
{
    ios::sync_with_stdio(false);
    cout.tie(0);cin.tie(0);
    cin>>n>>m;
    for(int i=0;i<n;i++) {
        cin>>a;
        feeds[i]=a;
    }
    sort(begin(feeds),begin(feeds)+n);

    int cnt=0;int cnt_up=0;ans=0;
    for(int i=0;i<n;i++) {
        // 这个if是判断是不是第一个,因为第一个i=0,没有i-1,要特判。
        if (i!=0) {
            // 如果两个连续树是
            if (feeds[i]==feeds[i-1]) {
                if (cnt_up!=0 and cnt>=cnt_up) {
                    cnt=cnt_up;
                }else {
                    cnt+=1;
                }
            }else if(feeds[i]-feeds[i-1]==1) {
                cnt_up=cnt;
                ans+=cnt;
                cnt=1;
            }else {
                ans+=cnt;
                cout<<ans;
                return 0;
            }
        }else {
            if (feeds[i]==1) {
                cnt=1;  // i=0时的特判
            }else {
                cout<<0;    // 记得要特判没有1级饲料的情况
                return 0;
            }
        }
    }
    ans+=cnt;
    cout<<ans;
    return 0;
}
// https://ac.nowcoder.com/acm/contest/view-submission?submissionId=70730331 发生段错误,由于代码给数组开的空间少打了个0
// 92% https://ac.nowcoder.com/acm/contest/view-submission?submissionId=70730835 没有特判没有1级饲料情况
// 100% https://ac.nowcoder.com/acm/contest/view-submission?submissionId=70732210