NC15203 投票统计(离散化)

 

 其实这个题用 map 的话很好解决

本题采用离散化解决,利用桶排的思想,因为桶无法申请那么大的内存,所以进行离散化

算法复杂度为排序复杂度 O(n^2)

const int N=1e5+5;

    int i,j,k;
    int n,m,t;
    pii a[N],cnt[N];
    vector<int> v,ans;

int get_id(int x)
{
    return lower_bound(v.begin(),v.end(),x)-v.begin()+1;
}

bool cmp(pii a,pii b)
{
    return a.fr>b.fr;
}

int main()
{
    //IOS;
    rush(){ ans.clear(); v.clear(),ms(cnt,0);
        sd(n);
        for(int i=1;i<=n;i++) sd(a[i].fr),v.pb(a[i].fr);

        sort(v.begin(),v.end());
        int maxx=0;
        v.erase(unique(v.begin(),v.end()),v.end());
        for(int i=1;i<=n;i++) a[i].sc=get_id(a[i].fr),maxx=max(maxx,a[i].sc);

        for(int i=1;i<=n;i++) cnt[a[i].sc].fr++,cnt[a[i].sc].sc=a[i].fr;
        sort(cnt+1,cnt+1+n,cmp);
        ans.pb(cnt[1].sc);
        for(int i=2;i<=n;i++) if(cnt[i].fr==cnt[1].fr) ans.pb(cnt[i].sc);
        int len=ans.size();
        if(len==maxx) pd(-1);
        else {
            pd(len);
            sort(ans.begin(),ans.end());
            for(int i=0;i<ans.size();i++) cout<<ans[i]<<" ";
            puts("");
        }
    }
    //PAUSE;
    return 0;
}

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页