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
36
37
38
39
40
#include<iostream>

using namespace std;

const int MAX_TAB = 201740;
const int MAX_A = 201738;

main()
{
    int monety[MAX_TAB];
    for (int i = 0; i <= MAX_A; ++i)
        monety[i] = 0;

    int n;
    cin >> n;
    for (int i = 0; i < n; ++i)
    {
        int moneta;
        cin >> moneta;
        ++monety[moneta];
    }

    for (int i = 0; i <= MAX_A; ++i)
    {
        while (monety[i] > 1)
        {
            monety[i] /= 2;
            ++monety[i+1];
        }
    }
    int wynik = MAX_A;
    while (wynik > 0)
    {
        if (monety[wynik] != 0)
            break;
        else
            --wynik;
    }
    cout << wynik;
}