#include
#include
#include
using namespace std;
#define N 1010
int Row[N],Column[N];
int TopkRow[N],TopkColumn[N];
int PosColumn[N],PosRow[N];
int main(){
int n,m,k,l,d;
while(scanf("%d%d%d%d%d",&m,&n,&k,&l,&d)!=EOF){
//init
memset(Row,0,sizeof(Row));
memset(Column,0,sizeof(Column));
memset(PosColumn,-1,sizeof(PosColumn));
memset(PosRow,-1,sizeof(PosRow));
int x1,y1,x2,y2;
int cnt1=1,cnt2=1;
TopkColumn[0]=0;
PosColumn[0]=0;
PosRow[0]=0;
TopkRow[0]=0;
int minn;
while(d--){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
if(x1==x2){
minn=min(y1,y2);
Column[minn]++;
if(Column[minn]<=Column[TopkColumn[cnt1-1]]&&(PosColumn[minn]!=cnt1-1)){
if(cnt1=0){
if(Column[minn]<=Column[TopkColumn[cnt]]){
break;
}
TopkColumn[cnt+1]=TopkColumn[cnt];
TopkColumn[cnt]=minn;
PosColumn[TopkColumn[cnt+1]]=PosColumn[minn];
PosColumn[TopkColumn[cnt]]=cnt;
cnt--;
}
}
}
else {
minn=min(x1,x2);
Row[minn]++;
if(Row[minn]<=Row[TopkRow[cnt2-1]]&&(PosRow[minn]!=cnt2-1)){
if(cnt2=0){
if(Row[minn]<=Row[TopkRow[cnt]]){
break;
}
TopkRow[cnt+1]=TopkRow[cnt];
TopkRow[cnt]=minn;
PosRow[TopkRow[cnt+1]]=PosRow[minn];//!!!-1
PosRow[TopkRow[cnt]]=cnt;
cnt--;
}
}
}
}
sort(TopkColumn,TopkColumn+l);
sort(TopkRow,TopkRow+k);
for(int i=0;i
4次快排如下:
#include
#include
#include
using namespace std;
#define N 1010
struct Type{
int num,pos;
}s1[N],s2[N];
int HashColumn[N];
int HashRow[N];
int Column[N];
int Row[N];
int cmp(Type x,Type y){
return x.num>y.num;
}
int main(){
int n,m,k,l,d;
while(scanf("%d%d%d%d%d",&m,&n,&k,&l,&d)!=EOF){
int x1,x2,y1,y2;
int minn;
int cnt1=0,cnt2=0;
memset(HashColumn,-1,sizeof(HashColumn));
memset(HashRow,-1,sizeof(HashRow));
for(int i=1;i<=d;i++){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
if(x1==x2){
minn=min(y1,y2);
if(HashColumn[minn]==-1){
s1[cnt1].num=1;
s1[cnt1].pos=minn;
HashColumn[minn]=cnt1++;
}
else {
s1[HashColumn[minn]].num++;
}
}
else {
minn=min(x1,x2);
if(HashRow[minn]==-1){
s2[cnt2].num=1;
s2[cnt2].pos=minn;
HashRow[minn]=cnt2++;
}
else {
s2[HashRow[minn]].num++;
}
}
}
sort(s1,s1+cnt1,cmp);
sort(s2,s2+cnt2,cmp);
int cnt=0;
while(cnt
本题在维护Topk数组的时候出现了很多小问题。。。