#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; } |
English