排序
注意sort数组时第二个参数是指向目标终点的后面一位
题目来自于洛谷OJ P1056 排座椅
#include <bits/stdc++.h>
using namespace std;
struct A
{
//nd为隔开的同学对数,nh为行(列)序号,构造时会初始化为0
int nd;
int nh;
};
bool cmpd(A x,A y)
{
return x.nd>y.nd;
}
bool cmph(A x,A y)
{
return x.nh<y.nh;
}
int main()
{
int m,n,k,l,d;
cin>>m>>n>>k>>l>>d;
A ks[1005],ls[1005];
for(int i = 1 ; i <= d ; i++)
{
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
if(y1==y2)
{
ks[min(x1,x2)].nd++;
ks[min(x1,x2)].nh = min(x1,x2);
}
else if(x1==x2)
{
ls[min(y1,y2)].nd++;
ls[min(y1,y2)].nh = min(y1,y2);
}
}
sort(ks+1,ks+m+1,cmpd);
sort(ls+1,ls+n+1,cmpd);
sort(ks+1,ks+k+1,cmph);
sort(ls+1,ls+l+1,cmph);
for(int i = 1 ; i <= k ; i++)
{
if(i != 1)
{
cout<<" ";
}
cout<<ks[i].nh;
}
cout<<endl;
for(int i = 1 ; i <= l ; i++)
{
if(i != 1)
{
cout<<" ";
}
cout<<ls[i].nh;
}
cout<<endl;
return 0;
}