codeforces_305C_STLset
Ivan has got an array of n non-negative integers a1, a2, ..., an. Ivan knows that the array is sorted in the non-decreasing order.
Ivan wrote out integers 2a1, 2a2, ..., 2an on a piece of paper. Now he wonders, what minimum number of integers of form 2b (b ≥ 0)need to be added to the piece of paper so that the sum of all integers written on the paper equalled 2v - 1 for some integer v (v ≥ 0).
Help Ivan, find the required quantity of numbers.
The first line contains integer n (1 ≤ n ≤ 105). The second input line contains n space-separated integers a1, a2, ..., an(0 ≤ ai ≤ 2·109). It is guaranteed that a1 ≤ a2 ≤ ... ≤ an.
Print a single integer — the answer to the problem.
4
0 1 1 1
0
1
3
set数据结构的应用,
#include<iostream> #include<cstdio> #include<set> using namespace std; set<int> s; int main() { int n,maxn=0; scanf("%d",&n); for(int i=0;i<n;i++) { int num; scanf("%d",&num); while(s.count(num)) { s.erase(num); num++; } s.insert(num); maxn=max(maxn,num); } printf("%d\n",maxn-s.size()+1); return 0; }