CF 750C New Year and Rating

好久没有更新博客了。
不过,2017第一更。
Ideas worth spreading
http://codeforces.com/problemset/problem/750/C
##Description
首先输入N
然后N行
每次两个数 A B
表示当前比赛的分数变化 和 当前比赛的段位
问最后最高可能是多少分
##Alogrithm
假设开始时0分,然后累加
这样就可以得到一个相对的分数和段位
例如

3
-7 1
5 2
8 2

这组数据,相对的分就是

0 1
-7 2
-2 2
6 ?

这组数据的意思是在"相对分"的情况下所处的段位
那么可以知道如果在第二段的"相对分"比第一段大,肯定哪里出问题了
不然就是有解的
我们找到最大的第二段的分,假设是max2,那么max2+1 对应的分为 1900的情况下最终分最大
这样ans = 1900-(max2 + 1) + s
s为最终的相对分
##Code

import sys
import math
n = int(sys.stdin.readline())
min1 = float('inf')
max2 = -min1
s = 0
x = 0
lv = 0
for i in range(n):
    args = sys.stdin.readline().split()
    lv = int(args[1])
    if lv == 1:
        min1 = min(min1, s)
    elif lv == 2:
        max2 = max(max2, s)
    x = int(args[0])
    s += x
if min1 <= max2:
    print("Impossible")
else:
    if math.isinf(max2):
        print("Infinity")
    else:
        print(1900-(max2 + 1) + s)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值