【八月份 -- 基础语法组】-- T2 -- 卡牌

· · 个人记录

https://cspjs.online/contest/756/problem/2

#include<bits/stdc++.h>
#define LL long long
using namespace std;
int num1[1000100];
int num2[1000100];
int main(){
    freopen("card.in","r",stdin);
    freopen("card.out","w",stdout);
    int n,k;
    cin>>n>>k;//烦死
    if(k==0){
        cout<<"0\n";
    }
    for(int i=0;i<n;i++){
        cin>>num1[i];
        num2[num1[i]]++;
    }
    sort(num2,num2+n);
    LL ans=0;
    for(int i=n-1;i>=0;i--){
        if(num2[i]==0)continue;
        if(k>=num2[i]){
            k-=num2[i];
            ans++;
        }
        else if(k>0){
            ans++;
            break;
        }
    }
    cout<<ans<<endl;//烦死
    return 0;
}