题解 | #排座椅#

排座椅

https://ac.nowcoder.com/acm/problem/16618

可以发现 行和列是不相关的 所以只用单独考虑行和列就行,取最大值,在按编号排序

#include<iostream>
#include<algorithm>
using namespace std;
int ans1[10010],ans2[10010];
struct node
{
    int i;
    int num;
}hang[10010],lie[10010];
bool cmp(node a,node b)
{
    return a.num>b.num;
}
int main()
{
    int n,m,k,l,d;
    cin>>n>>m>>k>>l>>d;
    for(int i=1;i<=max(n,m);i++)
        hang[i].i=i,lie[i].i=i;
    while(d--)
    {
        int x1,x2,y1,y2;
        cin>>x1>>y1>>x2>>y2;
        if(x1==x2)lie[y1+y2>>1].num++;
        else hang[x1+x2>>1].num++;
    }
    sort(hang+1,hang+n+1,cmp);
    sort(lie+1,lie+m+1,cmp);
    for(int i=1;i<=k;i++)ans1[i]=hang[i].i;
    for(int i=1;i<=l;i++)ans2[i]=lie[i].i;
    sort(ans1+1,ans1+1+k);
    sort(ans2+1,ans2+1+l);
    for(int i=1;i<=k;i++)
        cout<<ans1[i]<<' ';
    cout<<endl;
    for(int i=1;i<=l;i++)
        cout<<ans2[i]<<' ';
    cout<<endl;
}
全部评论

相关推荐

07-23 11:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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