POJ 2379 ACM Rank Table 排序, map

题目意思:
利用的就是acm的竞赛排名规则。大意是队伍参见比赛,然后让我们计算排名,第一关键词是过题数,过题数越多的队伍排名越高,排名相同的队伍看第二关键词时间,时间越短的队伍排名越高。
每道题目提交失败还会罚时,但是要注意的是若不通过题目,是不计算罚时的。

/*
本题要点:
1、 每道题都有第一次AC 的时间(秒做单位), 假设为 t1 = 3000, 这道题之前会可能错了很多次, 每错一次, 罚时 1200 秒。假如错三次
罚时 t2 = 1200 * 3;
每道题所花的时间为 t1 + t2 = 3000 + 3600 = 6600 ;
每个队伍,一共 AC 了几道题,算上这些题的所有时间,得到总时间

2、 队伍AC后可能还提交,无论对还是错,时间都是不算的
3、 数据输入的顺序是不一定的,也就是说两次AC,但是后面AC时间是最靠前的,这时后来提交的AC时间要忽略
4、 最后排序是AC->Time->id来排序的
*/

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
typedef pair<int, int> PII;		// 记录 <团队编号, 题目编号>	
map<PII, int> min_ac_time;	//	<团队编号, 题目编号> 到该题 AC 的最早时间
map<PII, int> wa_times;		//  <团队编号, 题目编号> 所对应的 错误次数
const int MaxN = 1010;
int c, n;

struct Run		// 提交
{
   
	int team_id, p_id, time;
	int ac;
}runs[MaxN];

struct Team		//队伍
{
   
	int team_id, ac_cnt, total_ti;
	bool operator<(const Team& rhs)</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值