pat_1012
来源:互联网 发布:软件开发阶段划分 编辑:程序博客网 时间:2024/05/17 01:03
源地址:http://www.patest.cn/contests/pat-a-practise/1012
题目不难,主要是有一个地方要注意,比如有三个人,他们的分数是 95 95 90,那么第三个人的排名应该是3而不是2,这个注意了,基本上就能够答对。
结构体排序 + map记录。
#include<stdio.h>#include<iostream>#include<string>#include<string.h>#include<algorithm>#include<iomanip>#include<vector>#include<time.h>#include<queue>#include<stack>#include<iterator>#include<math.h>#include<stdlib.h>#include<limits.h>#include<set>#include<map>//#define ONLINE_JUDGE#define eps 1e-3#define INF 0x7fffffff#define FOR(i,a) for((i)=0;i<(a);(i)++)#define MEM(a) (memset((a),0,sizeof(a)))#define sfs(a) scanf("%s",a)#define sf(a) scanf("%d",&a)#define sfI(a) scanf("%I64d",&a)#define pf(a) printf("%d\n",a)#define pfI(a) printf("%I64d\n",a)#define pfs(a) printf("%s\n",a)#define sfd(a,b) scanf("%d%d",&a,&b)#define sft(a,b,c)scanf("%d%d%d",&a,&b,&c)#define for1(i,a,b) for(int i=(a);i<b;i++)#define for2(i,a,b) for(int i=(a);i<=b;i++)#define for3(i,a,b)for(int i=(b);i>=a;i--)#define MEM1(a) memset(a,0,sizeof(a))#define MEM2(a) memset(a,-1,sizeof(a))const double PI=acos(-1.0);template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}template<class T> inline T Min(T a,T b){return a<b?a:b;}template<class T> inline T Max(T a,T b){return a>b?a:b;}using namespace std;#define ll long longint n,m;#define Mod 1000000007#define N 510#define M 1000100const int size = 10010;const int mod = 9901;struct Student{char id[20];int cscore;int mscore;int escore;int ascore;}a[2015];bool cmp1(Student x,Student y){return (x.ascore>y.ascore);}bool cmp2(Student x,Student y){return (x.cscore>y.cscore);}bool cmp3(Student x,Student y){return (x.mscore>y.mscore);}bool cmp4(Student x,Student y){return (x.escore>y.escore);}map<string,pair<int,char> > mp;int main(){#ifndef ONLINE_JUDGE freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);#endif while(scanf("%d%d",&n,&m)!=EOF){ for(int i=1;i<=n;i++){ scanf("%s%d%d%d",a[i].id,&a[i].cscore,&a[i].mscore,&a[i].escore); a[i].ascore = (a[i].cscore+a[i].mscore+a[i].escore)/3; } mp.clear(); sort(a+1,a+n+1,cmp1); int id=1; int sc=a[1].ascore; int same=1; for(int i=1;i<=n;i++){ if(a[i].ascore != sc){ id += same; sc = a[i].ascore; same = 1; }else if(i != 1) same++; mp[a[i].id] = make_pair(id,'A'); } sort(a+1,a+n+1,cmp2); id=1; sc = a[1].cscore; same = 1; for(int i=1;i<=n;i++){ if(a[i].cscore != sc){ id += same; sc = a[i].cscore; same = 1; }else if(i != 1) same++; if(id<mp[a[i].id].first) mp[a[i].id] = make_pair(id,'C'); } sort(a+1,a+n+1,cmp3); id=1; sc = a[1].mscore; same = 1; for(int i=1;i<=n;i++){ if(a[i].mscore != sc){ id += same; sc = a[i].mscore; same = 1; }else if(i != 1) same++; if(id<mp[a[i].id].first) mp[a[i].id] = make_pair(id,'M'); } sort(a+1,a+n+1,cmp4); id=1; sc = a[1].escore; same = 1; for(int i=1;i<=n;i++){ if(a[i].escore != sc){ id += same; sc = a[i].escore; same = 1; }else if(i != 1) same++; if(id<mp[a[i].id].first) mp[a[i].id] = make_pair(id,'E'); } char sid[20]; for(int i=0;i<m;i++){ scanf("%s",sid); if(mp.find(sid) == mp.end()) printf("N/A\n"); else printf("%d %c\n",mp[sid].first,mp[sid].second); } }return 0;}
0 0
- PAT_1012
- pat_1012
- PAT_1012: The Best Rank
- PAT_1012.The Best Rank
- PAT_1012. The Best Rank
- 传统产业如何在互联网时代创新与转型
- 利用OpenVSwitch构建多主机Docker网络
- Spring Action TransactionManager
- 解决文件名太长或文件夹路径太深无法删除
- Sql Server参数化查询之where in和like实现之xml和DataTable传参
- pat_1012
- JAVA-手写服务器
- qsort和sort函数用法区别
- javaee学习之路(二十三)JFreeChart
- 正确使用Java事件通知
- json与对象的相互转化
- Android NDK编译中在libs\armeabi中加入第三方so库文件的方法
- Spring好处
- .NET经典面试题