#include <iostream>
#include <vector>
#include <iterator>
#include <string>
#include <sstream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <limits>
#include <set>
#include <map>
using namespace std;
struct stu
{
char name[7];
int c_grad,m_grad,e_grad,a_grad;
};
bool cmp_a(const stu &stu_a,const stu &stu_b)
{
return stu_a.a_grad>stu_b.a_grad;
}
bool cmp_c(const stu &stu_a,const stu &stu_b)
{
return stu_a.c_grad>stu_b.c_grad;
}
bool cmp_m(const stu &stu_a,const stu &stu_b)
{
return stu_a.m_grad>stu_b.m_grad;
}
bool cmp_e(const stu &stu_a,const stu &stu_b)
{
return stu_a.e_grad>stu_b.e_grad;
}
struct info
{
int grad;
char c;
};
void search_elem(vector<stu> &stu_a,vector<stu> &stu_c,vector<stu> &stu_m,vector<stu> &stu_e,map<string,info> &map_result)
{
int rank=1;
int grade=stu_a.front().a_grad;
int rank_double=0;
for (vector<stu>::const_iterator cit=stu_a.cbegin();cit!=stu_a.cend();++cit)
{
rank_double=0;
while(cit!=stu_a.cend() && grade==cit->a_grad)
{
string name=cit->name;
info inf;
inf.grad=rank;
inf.c='A';
map_result[name]=inf;
++cit;
rank_double++;
}
rank+=rank_double;
if (cit!=stu_a.cend())
{
grade=cit->a_grad;
}
--cit;
}
//c
rank=1;
grade=stu_c.front().c_grad;
for (vector<stu>::const_iterator cit=stu_c.cbegin();cit!=stu_c.cend();++cit)
{
rank_double=0;
while(cit!=stu_c.cend() && grade==cit->c_grad)
{
string name=cit->name;
if (map_result[name].grad>rank)
{
info inf;
inf.grad=rank;
inf.c='C';
map_result.erase(name);
map_result[name]=inf;
}
rank_double++;
++cit;
}
rank+=rank_double;
if (cit!=stu_c.cend())
{
grade=cit->c_grad;
}
--cit;
}
//m
rank=1;
grade=stu_m.front().m_grad;
for (vector<stu>::const_iterator cit=stu_m.cbegin();cit!=stu_m.cend();++cit)
{
rank_double=0;
while(cit!=stu_m.cend() && grade==cit->m_grad)
{
string name=cit->name;
if (map_result[name].grad>rank)
{
info inf;
inf.grad=rank;
inf.c='M';
map_result.erase(name);
map_result[name]=inf;
}
rank_double++;
++cit;
}
rank+=rank_double;
if (cit!=stu_m.cend())
{
grade=cit->m_grad;
}
--cit;
}
//e
rank=1;
grade=stu_e.front().e_grad;
for (vector<stu>::const_iterator cit=stu_e.cbegin();cit!=stu_e.cend();++cit)
{
rank_double=0;
while(cit!=stu_e.cend() && grade==cit->e_grad)
{
string name=cit->name;
if (map_result[name].grad>rank)
{
info inf;
inf.grad=rank;
inf.c='E';
map_result.erase(name);
map_result[name]=inf;
}
rank_double++;
++cit;
}
rank+=rank_double;
if (cit!=stu_e.cend())
{
grade=cit->e_grad;
}
--cit;
}
}
int main()
{
vector<stu> student;
int n,m;
scanf("%d %d",&n,&m);
char in_name[7];
stu st;
int cnt=n;
while(cnt--)
{
scanf("%s %d %d %d",st.name,&st.c_grad,&st.m_grad,&st.e_grad);
st.a_grad=st.c_grad+st.m_grad+st.e_grad;
student.push_back(st);
}
vector<stu> stu_a(student);
vector<stu> stu_c(student);
vector<stu> stu_m(student);
vector<stu> stu_e(student);
sort(stu_a.begin(),stu_a.end(),cmp_a);
sort(stu_c.begin(),stu_c.end(),cmp_c);
sort(stu_m.begin(),stu_m.end(),cmp_m);
sort(stu_e.begin(),stu_e.end(),cmp_e);
map<string,info> map_result;
if (stu_a.size())
{
search_elem(stu_a,stu_c,stu_m,stu_e,map_result);
}
/*int count_num=0;
int a_rank=1,c_rank=1,m_rank=1,e_rank=1;
int grad_a,grad_c,grad_m,grad_e;
if (n>0)
{
grad_a=stu_a[0].a_grad;
grad_c=stu_c[0].c_grad;
grad_m=stu_m[0].m_grad;
grad_e=stu_e[0].e_grad;
}
for (int i=0;i!=n;++i)
{
string name=string(stu_a[i].name);
if (grad_a!=stu_a[i].a_grad)
{
a_rank++;
grad_a=stu_a[i].a_grad;
}
if (map_result.find(name)==map_result.end())
{
info inf;
inf.grad=a_rank;
inf.c='A';
map_result[name]=inf;
++count_num;
}
int t=i+1;
while(t<n && stu_a[t].a_grad==stu_a[i].a_grad)
{
name=stu_a[t].name;
if (map_result.find(name)==map_result.end())
{
info inf;
inf.grad=a_rank;
inf.c='A';
map_result[name]=inf;
++count_num;
}
++t;
}
name=stu_c[i].name;
if (grad_c!=stu_c[i].c_grad)
{
c_rank++;
grad_c=stu_c[i].c_grad;
}
if (map_result.find(name)==map_result.end())
{
info inf;
inf.grad=c_rank;
inf.c='C';
map_result[name]=inf;
++count_num;
}
t=i+1;
while(t<n && stu_c[t].c_grad==stu_c[i].c_grad)
{
name=stu_c[t].name;
if (map_result.find(name)==map_result.end())
{
info inf;
inf.grad=c_rank;
inf.c='C';
map_result[name]=inf;
++count_num;
}
++t;
}
name=stu_m[i].name;
if (grad_m!=stu_m[i].m_grad)
{
m_rank++;
grad_m=stu_m[i].m_grad;
}
if (map_result.find(name)==map_result.end())
{
info inf;
inf.grad=m_rank;
inf.c='M';
map_result[name]=inf;
++count_num;
}
t=i+1;
while(t<n && stu_m[t].m_grad==stu_m[i].m_grad)
{
name=stu_m[t].name;
if (map_result.find(name)==map_result.end())
{
info inf;
inf.grad=m_rank;
inf.c='M';
map_result[name]=inf;
++count_num;
}
++t;
}
name=stu_e[i].name;
if (grad_e!=stu_e[i].e_grad)
{
e_rank++;
grad_e=stu_e[i].e_grad;
}
if (map_result.find(name)==map_result.end())
{
info inf;
inf.grad=e_rank;
inf.c='E';
map_result[name]=inf;
++count_num;
}
t=i+1;
while(t<n && stu_e[t].e_grad==stu_e[i].e_grad)
{
name=stu_e[t].name;
if (map_result.find(name)==map_result.end())
{
info inf;
inf.grad=e_rank;
inf.c='E';
map_result[name]=inf;
++count_num;
}
++t;
}
if (count_num==n)
{
break;
}
}*/
while(m--)
{
scanf("%s",in_name);
string str=string(in_name);
if (map_result.find(str)==map_result.end())
{
printf("N/A\n");
}else{
printf("%d %c\n",map_result[str].grad,map_result[str].c);
}
}
system("pause");
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
浙大PAT advanced level 1001--1091答案代码
共97个文件
cpp:94个
filters:1个
vcxproj:1个
4星 · 超过85%的资源 需积分: 25 117 下载量 69 浏览量
2015-10-02
10:36:37
上传
评论 2
收藏 71KB ZIP 举报
温馨提示
浙大pat甲级1001到1091题目答案,供参考。
资源推荐
资源详情
资源评论
收起资源包目录
pat_advanced_level.zip (97个子文件)
pat_advanced_level
1045a Favorite Color Stripe.cpp 843B
1087a All Roads Lead to Rome --right.cpp 3KB
1026a table tennis.cpp 5KB
1079a Total Sales of Supply Chain.cpp 847B
pat_advanced_level.vcxproj.filters 10KB
1063a Set Similarity.cpp 1KB
1044a shopping in mars.cpp 1KB
1013a Battle Over Cities.cpp 999B
1080a Graduate Admission.cpp 1KB
1075a pat judge.cpp 2KB
1015a reversible prime.cpp 2KB
1051a Pop Sequence.cpp 922B
1086a Tree Traversals Again.cpp 861B
1091a Acute Stroke.cpp 1KB
1024a Palindromic Number.cpp 1KB
1017a queing at bank.cpp 2KB
1066a Root of AVL Tree.cpp 2KB
1061a Dating.cpp 2KB
1007a Maximum Subsequence Sum.cpp 2KB
1004a Counting Leaves.cpp 1KB
1034a head of gang.cpp 2KB
1002a a plus b polynomial.cpp 1KB
1009a product of polynomials.cpp 1KB
1060a are they equal.cpp 3KB
1032a sharing.cpp 2KB
1077a Kuchiguse.cpp 703B
1037a Magic Coupon.cpp 690B
1031a Hello World for U.cpp 642B
1016a right.cpp 2KB
1043a Is It a Binary Search Tree .cpp 1KB
1053a Path of Equal Weight.cpp 1KB
1068a Find More Coins.cpp 975B
1048a Find Coins.cpp 426B
1090a Highest Price in Supply Chain.cpp 799B
1023a have fun with number.cpp 1KB
1072a gas station.cpp 3KB
1057a stack.cpp 2KB
1035a Password.cpp 1KB
1076a Forwards on Weibo.cpp 1KB
1054a The Dominant Color.cpp 572B
1058a A+B in Hogwarts.cpp 343B
1003a emergency.cpp 3KB
1069a The Black Hole of Numbers.cpp 921B
1012a best rank.cpp 7KB
1081a rational sum.cpp 3KB
1065a A+B and C (64bit) --after letcd.cpp 453B
1067a Sort with Swap.cpp 634B
1046a Shortest Distance.cpp 438B
1036a Boys vs Girls.cpp 849B
1006a sign in out.cpp 1KB
1062a Talent and Virtue.cpp 2KB
1005a spell it right.cpp 903B
1010a radix.cpp 3KB
pat_advanced_level.vcxproj 20KB
1064a Complete Binary Search Tree.cpp 552B
1059a Prime Factors.cpp 817B
1011a World Cup Betting.cpp 699B
template.cpp 256B
1042a Shuffling Machine.cpp 864B
1016a Phone Bills .cpp 4KB
1055a The World's Richest.cpp 3KB
1022a Digital Library.cpp 3KB
1088a Rational Arithmetic.cpp 1KB
1001a a b format.cpp 691B
1038a Recover the Smallest Number.cpp 3KB
1052a linked list sorting.cpp 1KB
1033a to fill or not.cpp 2KB
1085a Perfect Sequence.cpp 746B
1050a String Subtraction.cpp 428B
1078a Hashing .cpp 1KB
1084a Broken Keyboard.cpp 564B
1014a waiting in line.cpp 2KB
1049a Counting Ones.cpp 409B
1030a travel plan.cpp 2KB
1082a Read Number in Chinese.cpp 1KB
1028a List Sorting.cpp 1KB
1020a tree traversals.cpp 2KB
1056a Mice and Rice.cpp 949B
1089a Insert or Merge.cpp 1KB
1083a List Grades.cpp 770B
1021a deepest root.cpp 2KB
1073a Scientific Notation.cpp 821B
pat_advanced_level.sln 981B
1040a Longest Symmetric String.cpp 722B
1019a General Palindromic Number.cpp 984B
1070a Mooncake.cpp 783B
1025a PAT Ranking.cpp 2KB
1041a Be Unique.cpp 356B
1071a Speech Patterns.cpp 575B
1047a Student List for Course.cpp 1KB
1018a Public Bike Management.cpp 3KB
1087a All Roads Lead to Rome.cpp 3KB
1029a median.cpp 2KB
1074a Reversing Linked List.cpp 1KB
1027a mars color.cpp 745B
1008a elevator.cpp 626B
1039a Course List for Student .cpp 1KB
共 97 条
- 1
资源评论
- Chirs-glory2017-11-26还不错了,
- qq_221223972015-11-11还不错吧 有些缺失
huoyao
- 粉丝: 23
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 549springboot + vue 民宿管理平台.zip (可运行源码+数据库文件+文档)
- ZArchiver.Pro_0.9.5.apk
- vmware环境配置.mp4
- 548springboot + vue 大学生社团活动平台.zip(可运行源码+数据库文件+文档)
- 微信小程序 辩论倒计时小程序源码 作业设计demo 计算机专业参考
- 深入探究文件IO,嵌入式Linux
- 微信备忘录小程序源码 作业设计demo 计算机专业作业
- 微信小程序 仿百度小说小程序 看小说小程序 实现源码
- 锂电资料包-锂离子电池技术干货资料合集.zip
- (王道计算机组成原理)第三章存储系统-第二节1:主存储器基本构成、基本的半导体原件和存储器芯片的原理_主存储器与存储芯片-CSDN博客 (2024….html
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功