#include <iostream> using namespace std; int main () { int n, a, max, res, i; int coins[201739]; // 201718 + 20 (2^20 > 1mln) cin >> n; for(i=0;i<201739;i++) coins[i] = 0; for (i = 0; i < n; i++) { cin >> a; if (max < a) max = a; coins[a]++; } for (i = 0; i < (max + 20); i++) { if (i >= max && coins[i] == 1) { res = i; break; } coins[i + 1] += (int) coins[i] / 2; } cout << res << endl; return 0; }
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> using namespace std; int main () { int n, a, max, res, i; int coins[201739]; // 201718 + 20 (2^20 > 1mln) cin >> n; for(i=0;i<201739;i++) coins[i] = 0; for (i = 0; i < n; i++) { cin >> a; if (max < a) max = a; coins[a]++; } for (i = 0; i < (max + 20); i++) { if (i >= max && coins[i] == 1) { res = i; break; } coins[i + 1] += (int) coins[i] / 2; } cout << res << endl; return 0; } |