// Lupus Nocawy 21 XI 2017, PA2017 // http://potyczki.mimuw.edu.pl/ // Runda 1 // Zadanie: SKA // Skarbonka [B] #include <cstdio> #include <iostream> using namespace std; #define REP(i,n) for(int i=0, _n=n; i<_n; ++i) #define FOR(i,a,b) for(int i=(a), _b=(b); i<=_b; ++i) const int max_n = 1000000; const int max_a = 201718; int C[max_a+1]; int main(void){ int n; scanf("%d ", &n); REP(i,n){ int c; scanf("%d ", &c); C[c]++; } FOR(i,0,max_a-1){ C[i+1] += C[i]/2; } int max_i = max_a; while(C[max_i]==0) max_i--; int b = max_i; while(C[max_i]>1){ b++; C[max_i]/=2; } printf("%d\n", b); 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 36 37 38 39 | // Lupus Nocawy 21 XI 2017, PA2017 // http://potyczki.mimuw.edu.pl/ // Runda 1 // Zadanie: SKA // Skarbonka [B] #include <cstdio> #include <iostream> using namespace std; #define REP(i,n) for(int i=0, _n=n; i<_n; ++i) #define FOR(i,a,b) for(int i=(a), _b=(b); i<=_b; ++i) const int max_n = 1000000; const int max_a = 201718; int C[max_a+1]; int main(void){ int n; scanf("%d ", &n); REP(i,n){ int c; scanf("%d ", &c); C[c]++; } FOR(i,0,max_a-1){ C[i+1] += C[i]/2; } int max_i = max_a; while(C[max_i]==0) max_i--; int b = max_i; while(C[max_i]>1){ b++; C[max_i]/=2; } printf("%d\n", b); return 0; } |