6.2 VJ A - Dreamoon and Ranking Collection

#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const ll nl=1e5+5;
/*
大概意思是有n个成绩数,在保证它们从小到大连续的条件下补上x个数,求出来补数之后能连起来的数的最大值
开一个数组记录哪些数出现过
从1到100遍历,找出补上x个数之后的位置,再遍历找出后面是否有连续的数,输出连续的数中最大的
如果100之内能补上的数小于x,就要加上少了几个数
刚开始错在忽略了求出的数后面可能不止有一个连续的数
*/
int main()
{
    speed_up;
    int t;
    cin>>t;
    while(t--)
    {
        int n,x;
        cin>>n>>x;
        int aa,a[101]={0},sum=0;
        for(int i=1;i<=n;i++)
        {
            cin>>aa;
            a[aa]=1;
        }
        int i;
        for(i=1;i<=100;i++)
        {
            if(a[i]==0)sum++;
            if(sum==x){
                for(int j=i+1;j<=100;j++){
                        if(a[j]==1)i++;
                        else break;
                }
                break;
            }
        }
        if(sum<x)i+=x-sum-1;//当x等于100时
        cout<<i<<endl;
    }
    return 0;
}
posted @ 2020-06-02 11:02  SyrupWRLD  阅读(185)  评论(0)    收藏  举报