1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <cmath>

#define LL long long
#define MAX_SIZE 210000

using namespace std;

void add_coin(unsigned int coin, bool *coins, unsigned int &max_coin) {
    if (coins[coin]) {
        coins[coin] = false;
        add_coin(coin + 1, coins, max_coin);
    } else {
        coins[coin] = true;
        if (coin > max_coin)
            max_coin = coin;
    }
}

int main()
{
    unsigned int N, coin, max_coin = 0;
    bool coins[MAX_SIZE];
    for (unsigned int i = 0; i < MAX_SIZE; i++ )
        coins[i] = false;

    cin >> N;
    for (unsigned int i = 0; i < N; i++) {
        cin >> coin;
        add_coin(coin, coins, max_coin);
    }

    cout << max_coin << endl;
    return 0;
}