浙大pat 1012题解
1012. The Best Rank (25)
To evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C - C Programming Language, M - Mathematics (Calculus or Linear Algrbra), and E - English. At the mean time, we encourage students by emphasizing on their best ranks -- that is, among the four ranks with respect to the three courses and the average grade, we print the best rank for each student.
For example, The grades of C, M, E and A - Average of 4 students are given as the following:
StudentID C M E A
310101 98 85 88 90
310102 70 95 88 84
310103 82 87 94 88
310104 91 91 91 91
Then the best ranks for all the students are No.1 since the 1st one has done the best in C Programming Language, while the 2nd one in Mathematics, the 3rd one in English, and the last one in average.
Input
Each input file contains one test case. Each case starts with a line containing 2 numbers N and M (<=2000), which are the total number of students, and the number of students who would check their ranks, respectively. Then N lines follow, each contains a student ID which is a string of 6 digits, followed by the three integer grades (in the range of [0, 100]) of that student in the order of C, M and E. Then there are M lines, each containing a student ID.
Output
For each of the M students, print in one line the best rank for him/her, and the symbol of the corresponding rank, separated by a space.
The priorities of the ranking methods are ordered as A > C > M > E. Hence if there are two or more ways for a student to obtain the same best rank, output the one with the highest priority.
If a student is not on the grading list, simply output "N/A".
Sample Input
5 6
310101 98 85 88
310102 70 95 88
310103 82 87 94
310104 91 91 91
310105 85 90 90
310101
310102
310103
310104
310105
999999
Sample Output
1 C
1 M
1 E
1 A
3 A
N/A
#include"iostream"
#include "algorithm"
#include <map>
#include <iomanip>
#include"string.h"
#include "vector"
using namespace std;
struct Student
{
int id;
int C;
int M;
int E;
int A;
};
bool compareA(Student a,Student b)
{
return a.A>b.A;
}
bool compareC(Student a,Student b)
{
return a.C>b.C;
}
bool compareM(Student a,Student b)
{
return a.M>b.M;
}
bool compareE(Student a,Student b)
{
return a.E>b.E;
}
int main()
{
vector<Student> stus;
map<int,char> Type;
map<int,int> Rank;
Student s;
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d%d%d%d",&s.id,&s.C,&s.M,&s.E);
s.A=(s.C+s.M+s.E)/3;
stus.push_back(s);
}
int score = -1;
int rank =0;
sort(stus.begin(),stus.end(),compareA);
for(int i=0;i<stus.size();i++)
{
if(stus[i].A!=score)
{
rank = i+1;
}
score = stus[i].A;
Rank[stus[i].id] = rank;
Type[stus[i].id] = 'A';
}
score = -1;
rank =0;
sort(stus.begin(),stus.end(),compareC);
for(int i=0;i<stus.size();i++)
{
if(stus[i].C!=score)
{
rank = i+1;
}
score = stus[i].C;
if(Rank[stus[i].id]>rank)
{
Rank[stus[i].id] = rank;
Type[stus[i].id] = 'C';
}
}
score = -1;
rank =0;
sort(stus.begin(),stus.end(),compareM);
for(int i=0;i<stus.size();i++)
{
if(stus[i].M!=score)
{
rank = i+1;
}
score = stus[i].M;
if(Rank[stus[i].id]>rank)
{
Rank[stus[i].id] = rank;
Type[stus[i].id] = 'M';
}
}
score = -1;
rank =0;
sort(stus.begin(),stus.end(),compareE);
for(int i=0;i<stus.size();i++)
{
if(stus[i].E!=score)
{
rank = i+1;
}
score = stus[i].E;
if(Rank[stus[i].id]>rank)
{
Rank[stus[i].id] = rank;
Type[stus[i].id] = 'E';
}
}
int Q;
for(int i=0;i<m;i++)
{
cin>>Q;
if(Type.count(Q))
cout<<Rank[Q]<<" "<<Type[Q]<<endl;
else
cout<<"N/A"<<endl;
}
return 0;
}
浙大pat 1012题解的更多相关文章
- 浙大pat 1035题解
1035. Password (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To prepare f ...
- 浙大pat 1025题解
1025. PAT Ranking (25) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Programmi ...
- 浙大pat 1011题解
With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...
- 浙大PAT 7-06 题解
#include <stdio.h> #include <iostream> #include <algorithm> #include <math.h> ...
- 浙大 pat 1003 题解
1003. Emergency (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- 浙大 pat 1038 题解
1038. Recover the Smallest Number (30) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...
- 浙大 pat 1047题解
1047. Student List for Course (25) 时间限制 400 ms 内存限制 64000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...
- 浙大pat 1054 题解
1054. The Dominant Color (20) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard Behind the scen ...
- 浙大pat 1059 题解
1059. Prime Factors (25) 时间限制 50 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 HE, Qinming Given ...
随机推荐
- .NET开发规范教程
.NET开发规范教程 这是1年多以前我在公司所做讲座的讲义,现在与园友们分享,欢迎拿去使用.一起讨论.文中有若干思考题,对园友们是小菜一碟.另有设计模式讲义一篇,随后发布. 1 概述 1.1 意义 “ ...
- python 提供INI配置文件的操作 ConfigParser
原文地址:http://www.cnblogs.com/pumaboyd/archive/2008/08/11/1265416.html 红色的为标注信息 +++++++++++++++++引用+++ ...
- launch failed.Binary not found
1.在eclipse官网中下载已经集成了CDT的eclipse.(http://www.eclipse.org/downloads/download.php?file=/technology/epp/ ...
- 登录验证全局控制的几种方式(session)
在登陆验证或者其他需要用到session全局变量的时候,归结起来,主要有以下三种较方便的实现方式.(其中个人较喜欢使用第一种实现方法) 一,在一个公共类里创建一个公共方法,然后需要验证的页面都调用这个 ...
- js jquery 实现html页面之间参数传递(单一参数、对象参数传递)
最近自己在忙着做毕业设计,后台程序员,前端菜鸡,因为需要,所以实现了html页面之间参数传递.------jstarseven .菜鸡的自我修养. 页面A代码如下: <!DOCTYPE html ...
- OC之方法的声明实现和调用
1. 类是来描述一群具有相同特征和行为的事物的. 类还有行为. 类的声明 @interface 类名 : NSObject { 属性. } 方法的声明 @end 类的实现. @implementati ...
- C语言之全局变量和局部变量
全局变量和局部变量的简介(tips:很重要 牢记) 全局变量:就是定义在函数外的变量 全局变量可以在任意函数中使用 生命周期:程序一启动就开辟空间,直到程序退出才回收 全局变量不允许同名 局部变量:就 ...
- 正经学C#_表达式与其运算符[算术运算符]:《c#入门经典》
表达式:正如字面意义,它是通过算术运算符来进行运算的数学公式.表达式的意义我们都是很明白的,大白话就是一个公式嘛.不是很难懂. 表达式不是一个单独的存在,必然有操作数或者操作符的.在c#中有操作符有很 ...
- 第一章ASP.NETMVC
一.MVC的概念 MVC由三部分组成:视图(View).模型(Model).控制器(Controller)组成 二.运用VS创建MVC 1.新建一个"解决方案" 2.在" ...
- ruby web性能响应时间
可以统计单个web页面加载时间. require 'watir-webdriver' require 'watir-webdriver-performance' b = Watir::Browser. ...