class Solution { public: int minimumDeviation(vector<int>& nums) { set<int>s; for(int&i:nums)s.insert(i*(i%2+1)); int mxd=2e9; while(1) { auto f=begin(s),b=end(s);--b; mxd=min(mxd,(*b)-(*f)); if((*b)%2)break; int i=*b; s.erase(b); s.insert(i/2); } auto f=begin(s),b=end(s);--b; mxd=min(mxd,(*b)-(*f)); return mxd; } };