【打CF,学算法——二星级】CodeForces 417B Crash (水题)

【CF简介】

提交链接:CF 417B


题面:

B. Crash
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

During the "Russian Code Cup" programming competition, the testing system stores all sent solutions for each participant. We know that many participants use random numbers in their programs and are often sent several solutions with the same source code to check.

Each participant is identified by some unique positive integer k, and each sent solution A is characterized by two numbers:x — the number of different solutions that are sent before the first solution identical toA, and k — the number of the participant, who is the author of the solution. Consequently, all identical solutions have the samex.

It is known that the data in the testing system are stored in the chronological order, that is, if the testing system has a solution with numberx (x > 0) of the participant with numberk, then the testing system has a solution with numberx - 1 of the same participant stored somewhere before.

During the competition the checking system crashed, but then the data of the submissions of all participants have been restored. Now the jury wants to verify that the recovered data is in chronological order. Help the jury to do so.

Input

The first line of the input contains an integer n (1 ≤ n ≤ 105) — the number of solutions. Each of the followingn lines contains two integers separated by spacex and k (0 ≤ x ≤ 105;1 ≤ k ≤ 105) — the number of previous unique solutions and the identifier of the participant.

Output

A single line of the output should contain «YES» if the data is in chronological order, and «NO» otherwise.

Examples
Input
2
0 1
1 1
Output
YES
Input
4
0 1
1 2
1 1
0 2
Output
NO
Input
4
0 1
1 1
0 1
0 2
Output
YES

题意:

    每个人有唯一的id标识,且每个人有多条提交记录,问给定的序列是否满足,每个人的提交记录是符合时间顺序的。题意不是很明了,简单地说就是每条记录出现前,其对应提交的id为x,那么x-1(0特殊)始终存在,则为合法。


解题:

      用一个vector数组记录每个id当前出现的最大的提交id,如果新的数据小于等于对应人的最大id+1,都是合法的,否则是非法的。


代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <cstdio>
#include <vector>
using namespace std;
vector <int> v[100005];
int main()
{
    int n,a,b;
	scanf("%d",&n);
	bool flag=1;
    for(int i=0;i<n;i++)
	{
		scanf("%d%d",&a,&b);
		if(a==0)
		{
			if(v[b].size()==0)
				v[b].push_back(a);
		}
		else
		{
			if(v[b].size()==0)
			{
				flag=0;
				break;
			}
			else
			{
				if(v[b][v[b].size()-1]<a-1)
				{
					flag=0;
					break;
				}
				else
				{
					if(a==v[b][v[b].size()-1]+1)
						v[b].push_back(a);
				}
			}
		}
			
	}
	if(flag)
		printf("YES\n");
	else
		printf("NO\n");
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值