Good Bye 2016 C. New Year and Rating

传送门

Description

Every Codeforces user has rating, described with one integer, possibly negative or zero. Users are divided into two divisions. The first division is for users with rating 1900 or higher. Those with rating 1899 or lower belong to the second division. In every contest, according to one‘s performance, his or her rating changes by some value, possibly negative or zero.

Limak competed in n contests in the year 2016. He remembers that in the i-th contest he competed in the division di (i.e. he belonged to this division just before the start of this contest) and his rating changed by ci just after the contest. Note that negative ci denotes the loss of rating.

What is the maximum possible rating Limak can have right now, after all n contests? If his rating may be arbitrarily big, print "Infinity". If there is no scenario matching the given information, print "Impossible".

Input

The first line of the input contains a single integer n (1 ≤ n ≤ 200 000).

The i-th of next n lines contains two integers ci and di ( - 100 ≤ ci ≤ 100, 1 ≤ di ≤ 2), describing Limak‘s rating change after the i-th contest and his division during the i-th contest contest.

Output

If Limak‘s current rating can be arbitrarily big, print "Infinity" (without quotes). If the situation is impossible, print "Impossible" (without quotes). Otherwise print one integer, denoting the maximum possible value of Limak‘s current rating, i.e. rating after the ncontests.

Sample Input

3-7 15 28 2
257 122 2
1-5 1
427 213 1-50 18 2

Sample Output

1907
Impossible
Infinity

1897

Note

In the first sample, the following scenario matches all information Limak remembers and has maximum possible final rating:

  • Limak has rating 1901 and belongs to the division 1 in the first contest. His rating decreases by 7.
  • With rating 1894 Limak is in the division 2. His rating increases by 5.
  • Limak has rating 1899 and is still in the division 2. In the last contest of the year he gets  + 8 and ends the year with rating 1907.

In the second sample, it‘s impossible that Limak is in the division 1, his rating increases by 57 and after that Limak is in the division 2 in the second contest.

思路

题解:

二分查找出符合题意的值,判断最后判断二分出来的结果是不是正确的。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 200005;
const int Left = -20000000;
const int Right = 20001900;
struct Node{
	int val,type;
}node[maxn];
int n;

bool OK(int x)
{
	for (int i = 0;i < n;i++)
	{
		if (node[i].type == 1)
		{
			if (x < 1900)	return true;
			x += node[i].val;
		}
		else
		{
			if (x > 1899)	return false;
			x += node[i].val;
		}
	}
	return true;
}

int main()
{
	//freopen("input.txt","r",stdin);
	scanf("%d",&n);
	for (int i = 0;i < n;i++)	scanf("%d%d",&node[i].val,&node[i].type);
	int left = Left,right = Right + 300;
	while (left < right - 1)
	{
		int mid = left + ((right-left)>>1);
		if (OK(mid))
		{
			left = mid;
		}
		else
		{
			right = mid;
		}
	}
	int val = left,sum = left;
	for (int i = 0;i < n;i++)
	{
		if (node[i].type == 1)
		{
			if (sum < 1900)
			{
				printf("Impossible\n");
				return 0;
			}
			else	sum += node[i].val;
		}
		else
		{
			if (sum > 1899)
			{
				printf("Impossible\n");
				return 0;
			}
			else	sum += node[i].val;
		}
	}
	if (val >= Right)	printf("Infinity\n");
	else	printf("%d\n",sum);
	return 0;
}

  

时间: 2024-10-11 16:38:35

Good Bye 2016 C. New Year and Rating的相关文章

codeforces Good bye 2016 E 线段树维护dp区间合并

题目大意:给你一个字符串,范围为'0'~'9',定义一个ugly的串,即串中的子串不能有2016,但是一定要有2017,问,最少删除多少个字符,使得串中符合ugly串? 思路:定义dp(i, j),其中i=5,j=5,因为只需要删除2016当中其中一个即可,所以一共所需要删除的字符和需要的字符为20176,因此i和j只要5就够了. 然后转移就是dp(i,i) = 0, 如果说区间大小为1的话,那么如果是2017中的一个,那么就是dp(pos, pos+1) = 0, dp(pos,pos) =

Good Bye 2016

A - New Year and Hurry (water) 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int a[100]; 6 for(int i = 1; i <= 10; i++) 7 { 8 a[i] = (1 + i) * i / 2 * 5; 9 } 10 int n ,k; 11 while(~scanf("%d%d", &n, &k)) 1

bye 2016, hi 2017

(2016-12-31) 转眼间一年就过去了,没有太多的感觉.几年前就开始已经不愿意长大,按照中国的传统计算方法,过完春节虚岁就三十了,所谓三十而立,到现在还一点影子也没有,有时想到这里就会恐慌一下. 回首2016,可以用充实两个字来形容.每天都在忙忙碌碌,编码.改bug.支持项目,也没忙出什么值得自己欢呼的结果.以前,每天都盼望着,快点到周末,现在,一不留神,明天又是周末了,我还有很多活没干完呢.除了忙点之外,2016还是非常不错的一年,感觉这一年,自己的各方面都有所提高.忙忙碌碌中,总是会有

Codeforces Good Bye 2016 E. New Year and Old Subsequence

传送门 题意: 给出一个长度为\(n\)的串,现在有\(q\)个询问,每个询问是一个区间\([l,r]\),要回答在区间\([l,r]\)中,最少需要删多少个数,满足区间中包含\(2017\)的子序列而不包含\(2016\)的子序列. 思路: 先不考虑多个询问,那么这个问题区间\(dp\)可以解决,状态定义中要附加状态转移的代价. 比如当前数字为\(7\),那么显然从状态\(201\)转移过来需要\(0\)的花费:但如果不要\(7\),那么从状态\(201\)到状态\(201\)则需要\(1\)

Codeforces Good Bye 2016 D 模拟搜索?

给出烟花的爆炸方式和爆炸次数 问最后有多少个格子会被炸到 如果dfs的话会超时... 利用模拟每一层来搜索..? 思想就是一开始有一个爆炸点向上 然后模拟完第一段 会产生一个爆炸点 朝两个方向 就用vector来存 每一层都处理一段的爆炸点 产生新一段的爆炸点 因为5*30=150 所以图建300就可以了 300 * 300 * 30的时间复杂度 但是常数很大..不过无所谓啦.. 需要注意的是 一个爆炸点可能会同时出现两次朝同一个方向开始爆炸的烟花 这个是没有意义的 所以拿一个数组来记录 不然最

聊一聊前端模板与渲染那些事儿

欢迎大家收看聊一聊系列,这一套系列文章,可以帮助前端工程师们了解前端的方方面面(不仅仅是代码): https://segmentfault.com/blog/frontenddriver 作为现代应用,ajax的大量使用,使得前端工程师们日常的开发少不了拼装模板,渲染模板.我们今天就来聊聊,拼装与渲染模板的那些事儿. 如果喜欢本文请点击右侧的推荐哦,你的推荐会变为我继续更文的动力 1 页面级的渲染 在刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串

使用 Raspberry Pi 上的传感器在 Node.js 中创建一个 IoT Bluemix 应用程序

先决条件 一个IBM Bluemix 帐号,一个 Raspberry Pi 2 或 3,一个 PIR 运动传感器 适用于本文的 Github 存储库 如果您是一位精明的 Bluemix 开发人员,您可能只想看看如何在 node.js 中与 IoT 建立连接,或者只想了解如何从此 github 存储库中拉取我的代码. git clone https://github.com/nicolefinnie/iot-nodejs-tutorial 以下是实现与 IBM IoT 平台连接在一起的 4 个 R

市面上未见FRI.Device.Rating.Program.V3.0.0.742+PipeFlow.Expert.2016.v7.30专业

FRI.Device.Rating.Program.V3.0.0.742美国精馏公司开发的化工软件     美国精馏公司开发的化工软件,市面上未见,会员拥有,可用于塔板(筛板, 浮阀)的严格的水力学计算   这是一个重大的改革,将使更多的DRP可持续升级程序.周五是规划的重大改进,继续为我们的会员提供价值. DLL转换项目成员的批准以便未来修改的新模型和功能添加DRP.QQ:16264558      TEL:13963782271   在DRP 3,计算引擎(DLL)进行了简化,并重新编写的C

ural 2016 Magic and Science

2016. Magic and Science Time limit: 1.0 secondMemory limit: 64 MB Scientists who specialize in witchcraft have recently discovered a new elementary particle called a magion. Studying the laws of magions’ movement, a group of three scientists conducts