codeforces 417B - Crash

题目链接:http://codeforces.com/problemset/problem/417/B

题目大意:每个提交者都有一个id标识,并且每次提交有两个信息:x - 之前发送的不同的解的个数,因此,所有相同的解决方案具有相同的x;k - 提交者id。给出一些提交信息,判断它是否符合时间顺序。

题目分析:如果数字是从0一路加上去的就是YES,如果出现的数字是已经出现过的也没关系,但是如果出现的数字是比之前记录的数字+1还大的,就NO了。

代码参考:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 100009;
int cnt[N];
int main()
{
    int n, m, c, d, k, i, x;
    while(~scanf("%d", &n))
    {
        memset(cnt, -1, sizeof(cnt));//一开始赋值为0
        bool f = true;//标记是否有非法情况出现
        for(i=0; i<n; ++i)
        {
            scanf("%d%d", &x, &k);
            if(cnt[k] == x - 1) cnt[k] = x;//如果是一路加上去的,ok
            else if(cnt[k] >= x) continue;//如果之前出现过的也ok
            else f = false;//但是如果都不是就no了
        }
        if(f == false) puts("NO");
        else puts("YES");
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值