Codeforces Round #532(Div. 2) B.Build a Contest

链接:https://codeforces.com/contest/1100/problem/B

题意:

给n,m。

给m个数,每个数代表一个等级,没给一个将其添加到题目池中,当题目池中有难度(1-n)的题目都存在时,

即可产生一次竞赛。

每给一个数,如果可以出竞赛,输出1,否则输出0。

思路:

一个变量记录有几种题目,一个数组记录每种题目有几个。

能出题时将每种题目的数量减一,减完后为0,则记录种类变量减一。

代码:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5+10;
int a[MAXN];
int sum = 0;

int main()
{
    int n,m,v;
    scanf("%d%d",&n,&m);
    for (int i = 0;i<m;i++)
    {
        scanf("%d",&v);
        a[v]++;
        if (a[v] == 1)
            sum++;
        if (sum == n)
        {
            printf("1");
            for (int i = 1;i<=n;i++)
            {
                a[i]--;
                if (a[i] == 0)
                    sum--;
            }
        }
        else
        {
            printf("0");
        }
    }
    printf("
");

    return 0;
}

  

原文地址:https://www.cnblogs.com/YDDDD/p/10266136.html