题解 | 排座椅

排座椅

https://www.nowcoder.com/practice/b8dc67c35bdb47e489da682e908379f7

#include <algorithm>
#include <unordered_map>
#include <iostream>
#include <vector>
using namespace std;

bool cmp(const pair<int, int> a1,const pair<int, int> a2)
{
    return a1.second>a2.second;
}

int main() {
    int n,m,k,l,d;cin>>n>>m>>k>>l>>d;
    unordered_map<int,int> r,c;
    //统计每条横竖分割的对数
    for(int i=0;i<d;i++)
    {
        int ax,ay,bx,by;cin>>ax>>ay>>bx>>by;
        if(ax==bx) c[min(ay,by)]++;
        else r[min(ax,bx)]++;
    }
    //每条横分割的按由降序排列,取出答案放入ans再升序排列
    vector<pair<int,int> > a;
    vector<int> ans;
    for(int i=1;i<=n;i++)
        a.push_back({i,r[i]});
    sort(a.begin(), a.end(), cmp);
    for(int i=0;i<k;i++)
        ans.push_back(a[i].first);
    sort(ans.begin(),ans.end());
    for(auto&i:ans)
    cout<<i<<' ';
    cout<<endl;
    a.clear();ans.clear();
    //和上面操作一样,就改一下
    for(int i=1;i<=m;i++)
    a.push_back({i,c[i]});
    sort(a.begin(), a.end(), cmp);
    for(int i=0;i<l;i++)
        ans.push_back(a[i].first);
    sort(ans.begin(),ans.end());
    for(auto&i:ans)
    cout<<i<<' ';
    cout<<endl;
}


全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务