#include <iostream> #include <vector> using namespace std; int n,x,maxi,mini,g; vector<int> _; int main() { cin >> n; for(int i=0; i<n; i++) { cin >> x; if(i==0) { maxi = x; mini = x; } maxi = max(maxi,x); mini = max(mini,x); for(int j=_.size(); j<x+1; j++) _.push_back(0); _[x]++; } for(int i =0; i<1000; i++) { _.push_back(0); } while(g < maxi || _[g] != 0) { if(_.size() < g+2) { _.push_back(0); } _[g+1] += _[g]/2; g++; } cout << g-1 << 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <iostream> #include <vector> using namespace std; int n,x,maxi,mini,g; vector<int> _; int main() { cin >> n; for(int i=0; i<n; i++) { cin >> x; if(i==0) { maxi = x; mini = x; } maxi = max(maxi,x); mini = max(mini,x); for(int j=_.size(); j<x+1; j++) _.push_back(0); _[x]++; } for(int i =0; i<1000; i++) { _.push_back(0); } while(g < maxi || _[g] != 0) { if(_.size() < g+2) { _.push_back(0); } _[g+1] += _[g]/2; g++; } cout << g-1 << endl; return 0; } |