20分求助!只能过1、2两个样例点
查看原帖
20分求助!只能过1、2两个样例点
272972
EdelsteinXIAN楼主2022/1/7 21:00

代码如下:

#include<bits/stdc++.h>
using namespace std;

struct node{
	int k,s;//k为选手报名号,s为笔试成绩 
}man[5001];

bool cmp(node a,node b){
	if(a.s>b.s) return 1;
	else if(a.s==b.s) return a.k<b.k;//报名号短的在前 
	else return 0;
}
int main(){
	int n,m,mt,mc,flag=0;//flag用于记录相同分数的人,m是计划录取的志愿者,mt为第m名选手*150%名选手,其分数为mc; 
	cin>>n>>m;
	mt=floor(m*1.5);
	//cout<<mt<<endl; 
	for(int i=1;i<=n;++i){
		cin>>man[i].k>>man[i].s;
	} 
	sort(man+1,man+1+n,cmp);
	mc=man[mt].s;//m的1.5倍以后的人的那个分数
	
	for(int i=2;i<=mt;++i){
		if(man[i].s==man[i-1].s) flag++;
	}//找同分数的人
	 
	cout<<man[mt].s<<" "<<mt+flag<<endl;
	
	for(int i=1;i<=mt+flag;++i){
		if(man[i].s>=mc){
			cout<<man[i].k<<" "<<man[i].s<<endl;	
		}else break;
		
	}
	return 0;
 }

搞了很久 一直过不了。。
2022/1/7 21:00
加载中...