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
41
//PA 2017 runda 1 Skarbonka[B]

#include <iostream>
using namespace std;

#define MAX_BITOW 201750

int monety[MAX_BITOW];

int main() {
  ios_base::sync_with_stdio(0);

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

  for(int i = 0; i < MAX_BITOW; ++i) {
    moneta = monety[i];
    monety[i] = 0;
    ktoryBit = 0;
    while(moneta) {
      if(moneta % 2) {
        ++monety[i + ktoryBit];
        --moneta;
      }
      moneta /= 2;
      ++ktoryBit;
    }
  }

  for(int i = MAX_BITOW - 1; i >= 0; --i)
    if(monety[i]) {
      cout << i;
      return 0;
    }

  return 0;
}