#include <iostream> #include <stdio.h> #include <vector> using namespace std; void setBit(vector<bool> &bits, int n, int val); int main() { unsigned long long i = 0; unsigned long long n; unsigned long long val = 0; scanf("%llu", &n); vector<bool> bits; for(i = 0 ; i < n ; i++) { scanf("%llu", &val); setBit(bits, val, 1); } val = bits.size() - 1; printf("%llu", val); return 0; } void setBit(vector<bool> &bits, int n, int val) { while(bits.size() <= n) { bits.push_back(false); } if(val == 1 && bits.at(n) == 1) { bits.at(n) = 0; setBit(bits, n + 1, 1); } else { bits.at(n) = val; } }
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 | #include <iostream> #include <stdio.h> #include <vector> using namespace std; void setBit(vector<bool> &bits, int n, int val); int main() { unsigned long long i = 0; unsigned long long n; unsigned long long val = 0; scanf("%llu", &n); vector<bool> bits; for(i = 0 ; i < n ; i++) { scanf("%llu", &val); setBit(bits, val, 1); } val = bits.size() - 1; printf("%llu", val); return 0; } void setBit(vector<bool> &bits, int n, int val) { while(bits.size() <= n) { bits.push_back(false); } if(val == 1 && bits.at(n) == 1) { bits.at(n) = 0; setBit(bits, n + 1, 1); } else { bits.at(n) = val; } } |