求助大神救命!样例过了提交时只AC了第一个点,帮帮忙
查看原帖
求助大神救命!样例过了提交时只AC了第一个点,帮帮忙
499140
3wykx楼主2022/7/27 12:43

(10分代码):

#include <bits/stdc++.h>
using namespace std;
int m,n,k,l,d,x,y,p,q,a[2005]={0},b[2005]={0},minn,maxn;
int main(){
	a[2001]=0; //maxn比较时用作初始值
	b[2001]=0;
	scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);
	if(k==0&&l==0)return 0;
	for(int i=1;i<=d;i++){
		scanf("%d%d%d%d",&x,&y,&p,&q);
		if(x!=p){
			minn=min(x,p);
			a[minn]++; //把一条过道能隔开的最多学生记录
		}
		else if(p!=q){
			minn=min(y,q);
			b[minn]++;
		}
	}
	for(int j=0;j<k;){ //找最大值输出
		int ww=j;
		maxn=2001; //这样a[maxn]就是0,初始化了maxn(5、6行)
		for(int i=0;i<1001;i++){ //这个嵌套的for循环找出最大值的下标
			if(a[i]>a[maxn]){
				maxn=i;
				a[i]=0,j++;
			}
		}
		a[maxn]=0;
		if(j==ww)break; //如果j没增加,也就是数组全0了就break
		cout<<maxn<<' ';
	}
	cout<<endl;
	//下面一样
	for(int j=0;j<l;){
		int ww=j;
		maxn=2001;
		for(int i=0;i<1001;i++){
			if(b[i]>b[maxn]){
				maxn=i;
				j++;
			}
		}
		b[maxn]=0;
		if(j==ww)break;
		cout<<maxn<<' ';
	}
	return 0;
}
2022/7/27 12:43
加载中...