http://codeforces.com/problemset/problem/862/A
给出一串数列,再给出一个数,每次操作可以加上一个数或者去掉一个数,询问至少操作多少次可以使得所给出的数是从0开始递增产生的数列中最小的且没出现的数
把数列排序后从头开始模拟即可
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,k;
while(cin>>n>>k){
int a[1111];
int i,j;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int z=0;
int ans=0;
i=0;
while(i<=k&&z<n)
{
if(i==k&&i==a[z])
{
ans++;break;
}
else if(i==k)
{
break;
}
if(i<k&&i<a[z])
{
i++;
ans++;
}
else if(i<k&&i==a[z])
{
i++;
z++;
}
else if(i<k&&i>a[z])
{
z++;
}
}
if(k>a[n-1])ans+=k-a[n-1]-1;
cout<<ans<<endl;
}
return 0;
}