未解之谜啊,10与100一念之差
查看原帖
未解之谜啊,10与100一念之差
942328
ZhangQirui1楼主2024/8/6 18:32

10分代码:

#include <bits/stdc++.h>
using namespace std;
const int N=2005,D=2005;
int m,n,k,l,d;
struct hallways
{
  int w,p;
} a[N],b[N];
bool cmp(hallways a,hallways b)
{
  if(a.w!=b.w) return a.w > b.w;
  return a.p < b.p;
}
int main()
{
  scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);
  for(int i=1; i<=d; i++)
  {
    int x,y,p,q;
    scanf("%d%d%d%d",&x,&y,&p,&q);
    int xx=min(x,p),yy=min(y,q);
    if(y==q) //两个同学在同一列,用行隔开
    {
      a[xx].p=xx;
      a[xx].w++;
    }
    else  //两个同学在同一行,用列隔开
    {
      b[yy].p=yy;
      b[yy].w++;
    }
  }
  sort(a+1,a+n+1,cmp);
  sort(b+1,b+m+1,cmp);
  for(int i=1; i<=k; i++) printf("%d ",a[i].p);
  printf("\n");
  for(int i=1; i<=l; i++) printf("%d ",b[i].p);
  return 0;
}

100分代码

#include <bits/stdc++.h>
using namespace std;
const int N=2005;
int m,n,k,l,d;
struct hallways
{
  int w,p;
} a[N],b[N];
bool cmp(hallways a,hallways b){return a.w > b.w;}
bool cmp1(hallways a,hallways b){return a.p < b.p;}
int main()
{
  scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);
  for(int i=1; i<=d; i++)
  {
    int x,y,p,q;
    scanf("%d%d%d%d",&x,&y,&p,&q);
    int xx=min(x,p),yy=min(y,q);
    if(y==q) //两个同学在同一列,用行隔开
    {
      a[xx].p=xx;
      a[xx].w++;
    }
    else  //两个同学在同一行,用列隔开
    {
      b[yy].p=yy;
      b[yy].w++;
    }
  }
  sort(a+1,a+n+1,cmp);
  sort(b+1,b+m+1,cmp);
  sort(a+1,a+k+1,cmp1);
  sort(b+1,b+l+1,cmp1);
  for(int i=1; i<=k; i++) printf("%d ",a[i].p);
  printf("\n");
  for(int i=1; i<=l; i++) printf("%d ",b[i].p);
  return 0;
}

所以问题是出在哪里呢??!

2024/8/6 18:32
加载中...