浙大PAT 7-06 题解
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <queue>
#include <stack>
#define N 400
#define ll int
using namespace std;
struct node{
ll gold,all,pre,num;
double pa,pg;
ll r1,r2,r3,r4;
}p[N];
bool cmp1(node a,node b){return a.gold>b.gold;}
bool cmp2(node a,node b){return a.all>b.all;}
bool cmp3(node a,node b){return a.pa>b.pa;}
bool cmp5(node a,node b){return a.pg>b.pg;}
bool cmp4(node a,node b){return a.num<b.num;}
int main(){
ll n,m,i,j;
while(~scanf("%d%d",&n,&m)){
for(i=0;i<n;i++){
scanf("%d %d %d",&p[i].gold,&p[i].all,&p[i].pre);
p[i].num=i;
if(p[i].pre==0){p[i].pg=p[i].pa=1000;continue;}
if(p[i].all)
p[i].pa=(double)p[i].all/(double)p[i].pre;
else p[i].pg=0;
if(p[i].gold)
p[i].pg=(double)p[i].gold/(double)p[i].pre;
else p[i].pg=0;
}
sort(p,p+n,cmp1);
ll rank=0,ranktemp=0;
for(i=0;i<n;i++)
if(i!=0 && p[i].gold==p[i-1].gold)
p[i].r1=rank,ranktemp++;
else
{
rank+=ranktemp+1;
ranktemp=0;
p[i].r1=rank;
}
sort(p,p+n,cmp2);
rank=0,ranktemp=0;
for(i=0;i<n;i++)
if(i!=0 && p[i].all==p[i-1].all)
p[i].r2=rank,ranktemp++;
else
{
rank+=ranktemp+1;
ranktemp=0;
p[i].r2=rank;
}
sort(p,p+n,cmp5);
rank=0,ranktemp=0;
for(i=0;i<n;i++)
if(i!=0 && p[i].pg==p[i-1].pg)
p[i].r4=rank,ranktemp++;
else
{
rank+=ranktemp+1;
ranktemp=0;
p[i].r4=rank;
}
sort(p,p+n,cmp3);
rank=0,ranktemp=0;
for(i=0;i<n;i++)
if(i!=0 && p[i].pa==p[i-1].pa)
p[i].r3=rank,ranktemp++;
else
{
rank+=ranktemp+1;
ranktemp=0;
p[i].r3=rank;
}
sort(p,p+n,cmp4);
while(m--){
scanf("%d",&i);
ll a=N,b;
if(p[i].r1<a){a=p[i].r1;b=1;}
if(p[i].r2<a){a=p[i].r2;b=2;}
if(p[i].r4<a){a=p[i].r4;b=3;}
if(p[i].r3<a){a=p[i].r3;b=4;}
printf("%d:%d",a,b);
if(m)printf(" ");
else printf("\n");
}
}
return 0;
}
/*
4 4
51 100 1000
36 110 300
6 14 32
5 18 40
0 1 2 3
7 2
51 100 1000
36 110 300
6 14 32
5 18 40
23 73 142
19 47 61
16 41 82
4 6
6 6
15 45 50
45 90 500
50 100 1000
30 80 75
50 100 500
40 90 100
2 4 1 5 3 0
4 4
2 3 1
1 3 1
2 5 1
0 4 1
1 3 2 0
*/
浙大PAT 7-06 题解的更多相关文章
- 浙大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 1012题解
1012. The Best Rank (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To eval ...
- 浙大 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 ...
随机推荐
- PHPStrom上传文件报502错误原因
PhpStorm是一个轻量级且便捷的PHP IDE,其自身拥有apache类似的编译器,能够在无Apache的情况下运行,很适合初学PHPStrom的朋友. 但是我发现了一个问题,那就是用PHPStr ...
- php设计模式之:观察者模式
转载自php面向对象设计模式 之 观察者模式 问题 假如一个小贩, 他把产品的价格提升了, 不同的消费者会对此产生不同的反应.一般的编程模式无非是获取提升的价格,然后获取所有的消费者,再循环每个消费者 ...
- Tomjson - json 解析库
Tomjson - 一个"短小精悍"的 json 解析库 Tomjson,一个"短小精悍"的 json 解析库,tomjson使用Java语言编写,主要作用是把 ...
- Oracle EBS-SQL (PO-11):检查采购订单退货数.sql
select msi.segment1 物料编码, -- msi.inventory_item_id return_it ...
- Android APN配置
APN概念 APN(Access Point Name),即“接入点名称”,用来标识GPRS的业务种类,目前分为两大类:CMWAP(通过GPRS访问WAP业务).CMNET(除了WAP以外的服务目前都 ...
- MYSQL 简单的循环存储过程
BEGIN ; ; DO DO ); ; ) THEN ; END IF; END WHILE; ; ; END WHILE; END
- #include <locale.h> #include <locale>
C C++ C 1 setlocale setlocale,本函数用来配置地域的信息,设置当前程序使用的本地化信息. #include <stdio.h> #include <std ...
- #include <process.h>
1 _beginthread 单进程,单线程,必须干完一件事情后干另一件事情 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #incl ...
- 赵雅智_BroadcastReceiver电话监听
AndroidManifest.xml 注冊广播接收者 加入权限 <?xml version="1.0" encoding="utf-8"?> &l ...
- SQL2012尝试读取或写入受保护的内存。这通常指示其他内存已损坏
SQL2012尝试读取或写入受保护的内存.这通常指示其他内存已损坏 今天打开SQL2012,突然就连接不了数据库,一开始还以为是某个服务器崩溃了,结果试了好几个,都还是如此,弹出提示如下: 尝试读取或 ...