1012 The Best Rank

对于每一次查询 遍历所有数据 找到大于自己的个数加一就是排名

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;


int n,m;
map<int,int>ha1,ha2,ha3,ha4;
vector<int>ans;

int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		int a;
		cin>>a;
		ans.push_back(a);
		cin>>ha1[a]>>ha2[a]>>ha3[a];
		ha4[a]=(ha1[a]+ha2[a]+ha3[a])/3;	
	}
	for(int i=0;i<m;i++){
		int t;
		cin>>t;
		if(ha1.count(t)==0){cout<<"N/A"<<endl;
                           continue;}
		char c;
		int pai=100000;
		
		
		auto it=ha4.begin();
		int ren=1;
		while(it!=ha4.end()){
			if(it->second>ha4[t])ren++;
			it++;
		}
		if(ren<pai){
			c='A';
			pai=ren;
		}
		
		it=ha1.begin();
		 ren=1;
		while(it!=ha1.end()){
			if(it->second>ha1[t])ren++;
			it++;
		}
		if(ren<pai){
			c='C';
			pai=ren;
		}
		
		it=ha2.begin();
		 ren=1;
		while(it!=ha2.end()){
			if(it->second>ha2[t])ren++;
			it++;
		}
		if(ren<pai){
			c='M';
			pai=ren;
		}
		
		it=ha3.begin();
		 ren=1;
		while(it!=ha3.end()){
			if(it->second>ha3[t])ren++;
			it++;
		}
		if(ren<pai){
			c='E';
			pai=ren;
		}
		cout<<pai<<" "<<c<<endl;
		
	}
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值