#include <cstdio> unsigned long coins[1000000] = {0}; int main(void) { unsigned count, exp, max = 0; scanf("%u",&count); for(unsigned i=0;i<count;++i) { scanf("%u",&exp); ++coins[exp]; if(exp>max) { max = exp; } } for(unsigned i=0;i<=max;++i) { if(coins[i]>1) { coins[i+1] += coins[i]/2; if(i==max) ++max; } } printf("%u\n",max); 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 | #include <cstdio> unsigned long coins[1000000] = {0}; int main(void) { unsigned count, exp, max = 0; scanf("%u",&count); for(unsigned i=0;i<count;++i) { scanf("%u",&exp); ++coins[exp]; if(exp>max) { max = exp; } } for(unsigned i=0;i<=max;++i) { if(coins[i]>1) { coins[i+1] += coins[i]/2; if(i==max) ++max; } } printf("%u\n",max); return 0; } |