您的位置:首页 > 其它

codeforces 417B Crash

2015-12-08 21:02 169 查看
Description

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 to A, and k — the number of the participant, who is the author of the solution. Consequently, all identical solutions have the same x.

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 number x(x > 0) of the participant with number k, then the testing system has a solution with number x - 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 following n lines contains two integers separated by space x 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.

Sample Input

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

题意:在比赛过程,每个选手可以提交若干次代码,现在有n次提交,每次提交有两个参数,x表示该选手提交的第x+1份不同代码(即前面提交的代码中有x种和当前份不同),k表示第k位选手提交的代码。问说这n次提交是否有误。

[code]#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;

int a[100100];
int main()
{
    int n,x,k,flag=1;
    cin>>n;
    memset(a,0,sizeof(a));
    for(int i=1; i<=n; i++)
    {
        cin>>x>>k;
        if(x>a[k])
        {
            flag=0;
        }
        else if(x==a[k])
            a[k]++;
    }
    if(flag==0)
    cout<<"NO"<<endl;
    else
    cout<<"YES"<<endl;
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: