欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1012

程序员文章站 2024-01-12 08:07:34
...

       自己写的一直段错误,看了其他博主的代码重写才过。其实也是很基础的排序题,但一遇到稍微复杂点的大脑就很混乱,数学渣真的影响逻辑思路,遇到不熟悉的就一片混乱,并且也很难静下心来思考。

//time:2019/12/29 21:30
//PAT A 1012
#include<iostream> 
#include<vector>
#include<algorithm>
using namespace std;

typedef struct STU
{
	int id;
	int score[4];
}student;
student stus[2000];
int Rank[1000000][4]={0};
int now;
char Cou[4]={'A','C','M','E'};
bool compare(student A,student B)
{
	return A.scorce[now]>B.scorce[now];
}


int main()
{
	int n,m;
	scanf("%d %d",&n,&m);
	for(int i=0;i<n;i++)
	{
		scanf("%d%d%d%d",&stus[i].id,&stus[i].scorce[1],&stus[i].scorce[2],&stus[i].scorce[3]);
		stus[i].scorce[0]=(stus[i].scorce[1]+stus[i].scorce[2]+stus[i].scorce[3])/3;
	}
	for(now=0;now<4;now++)
	{
		sort(stus,stus+n,compare);
		Rank[stus[0].id][now]=1;
		for(int i=1;i<n;i++)
		{
			if(stus[i].scorce[now]==stus[i-1].scorce[now])
			{
				Rank[stus[i].id][now]=Rank[stus[i-1].id][now];
			}
			else
			{
				Rank[stus[i].id][now]=i+1;
			}
		} 
	}
	for(int i=0;i<m;i++)
	{
		int id;
		scanf("%d",&id);
		if(Rank[id][0]==0)
		{
			printf("N/A\n");
		}
		else
		{
			int pos=0;
			for(int j=0;j<4;j++)
			{
				if(Rank[id][j]<Rank[id][pos])
					pos=j;
			}
			printf("%d %c\n",Rank[id][pos],Cou[pos]);
		}
	}
//	for(int i=0;i<n;i++)
//	{
//		printf("%d %d %d %d\n",stus[i].id,stus[i].scorce[1],stus[i].scorce[2],stus[i].scorce[3]);
//	}
	return 0;
}

 

相关标签: PAT-A C++