P1056 排座椅

非原创

#include<bits/stdc++.h>
using namespace std;
int t1[2009];
int t2[2009];
int findmax(int *a)
{
    int i,p=0;
    for(i=0;i<1001;i++)
    {
        if(a[p]<a[i]) p=i;
    }
    return p;
}
int main()
{
    int m,n,k,l,d;
    scanf("%d %d %d %d %d", &m, &n, &k, &l, &d);
    int i,t;
    int x1,x2,y1,y2;
    int x[1009],y[1009];
    memset(x,0,sizeof(x));
    memset(y,0,sizeof(y));
    for(i=0;i<d;i++)
    {
        scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
        if(x1==x2) y[min(y1,y2)]++;
        else x[min(x1,x2)]++;
    }
    for(i=1;i<=k;i++)
    {
        t=findmax(x);
        t1[t]=1;
        x[t]=0;
    }
    for(i=1;i<=l;i++)
    {
        t=findmax(y);
        t2[t]=1;
        y[t]=0;
    }
    for(i=1;i<=m;i++) if(t1[i]) printf("%d ",i);
    printf(" ");
    for(i=1;i<=n;i++) if(t2[i]) printf("%d ",i);
    return 0;
}
原文地址:https://www.cnblogs.com/EchoZQN/p/10000087.html