1012. The Best Rank @ PAT (Advanced Level) Practise

20 篇文章 0 订阅
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>

using namespace std;
bool myCmp(const int a,const int b)
{
	return a>b;
}
int main()
{
	int br;
	char brc;
	int idx;
	string sn;
	int iC,iM,iE,iA;
	vector<string> name;
	vector<string>::iterator nit;
	vector<int>::iterator iit;
	vector<int> C,M,E,A;
	
	int n,m;
	cin>>n;
	cin>>m;
	for(int i=0;i<n;i++)
	{
		cin>>sn>>iC>>iM>>iE;
		iA=(iC+iM+iE)/3;
		name.push_back(sn);
		C.push_back(iC);
		M.push_back(iM);
		E.push_back(iE);
		A.push_back(iA);
	}
	vector<int> sortedC(C.begin(),C.end());
	vector<int> sortedM(M.begin(),M.end());
	vector<int> sortedE(E.begin(),E.end());
	vector<int> sortedA(A.begin(),A.end());
	sort(sortedC.begin(),sortedC.end(),myCmp);
	sort(sortedM.begin(),sortedM.end(),myCmp);
	sort(sortedE.begin(),sortedE.end(),myCmp);
	sort(sortedA.begin(),sortedA.end(),myCmp);

	//Print the Vectors
	/*
	for(nit=name.begin();nit!=name.end();nit++){cout<<*nit<<" ";}
	cout<<endl;
	for(iit=C.begin();iit!=C.end();iit++){cout<<*iit<<" ";}	cout<<endl;
	for(iit=M.begin();iit!=M.end();iit++){cout<<*iit<<" ";} cout<<endl;
	for(iit=E.begin();iit!=E.end();iit++){cout<<*iit<<" ";} cout<<endl;
	for(iit=A.begin();iit!=A.end();iit++){cout<<*iit<<" ";} cout<<endl;

	for(iit=sortedC.begin();iit!=sortedC.end();iit++){cout<<*iit<<" ";} cout<<endl;
	for(iit=sortedM.begin();iit!=sortedM.end();iit++){cout<<*iit<<" ";}	cout<<endl;
	for(iit=sortedE.begin();iit!=sortedE.end();iit++){cout<<*iit<<" ";}	cout<<endl;
	for(iit=sortedA.begin();iit!=sortedA.end();iit++){cout<<*iit<<" ";}	cout<<endl;
	*/
		

	for(int i=0;i<m;i++)
	{
		br=-1;
		idx=0;
		cin>>sn;
		nit=search_n(name.begin(),name.end(),1,sn);
		if(nit==name.end())
		{
			cout<<"N/A"<<endl;
			continue;
		}
		else
			idx=nit-name.begin();//get the distance. or use the function distance()
		
		iC=C[idx];
		iM=M[idx];
		iE=E[idx];
		iA=A[idx];

		iit=search_n(sortedA.begin(),sortedA.end(),1,iA);
		br=iit-sortedA.begin();
		brc='A';

		iit=search_n(sortedC.begin(),sortedC.end(),1,iC);
		if((iit-sortedC.begin())<br)
		{
			br=iit-sortedC.begin();
			brc='C';
		}
		iit=search_n(sortedM.begin(),sortedM.end(),1,iM);
		if((iit-sortedM.begin())<br)
		{
			br=iit-sortedM.begin();
			brc='M';
		}
		iit=search_n(sortedE.begin(),sortedE.end(),1,iE);
		if((iit-sortedE.begin())<br)
		{
			br=iit-sortedE.begin();
			brc='E';
		}
		
		cout<<br+1<<" "<<brc<<endl;


	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值