玄学做法 90pts 求调
查看原帖
玄学做法 90pts 求调
1137152
SmartCirno楼主2024/11/22 09:13

WA #19 #20

#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
#define MAXN 100005
int n,ans,rgmax=-2147483640,rgmin=2147483647;
int a[MAXN],c[MAXN];
set<int> st;
void solve(int p)
{
    for(int i=p+1;i<=rgmax;i++)
    {
        if(!c[i])continue;
        int tmp=min(a[i],c[p]);
        a[i]-=tmp;
        c[p]-=tmp;
        solve(i);
        break;
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int w;
        cin>>w;
        rgmax=max(rgmax,w);
        rgmin=min(rgmin,w);
        c[w]++;
        a[w]=c[w];
        st.insert(w);
    }
    for(int i=1;i<=min((int)st.size(),10000);i++)solve(rgmin);
    for(int i=rgmin;i<=rgmax;i++)ans+=c[i];
    cout<<ans;
    return 0;
}

2024/11/22 09:13
加载中...