#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> nums)
{
int n = nums.size();
auto lu = minmax_element(nums.begin(), nums.end());
int l = *lu.first, u = *lu.second;
int gap = max((u - l) / (n - 1), 1);
int m = (u - l) / gap + 1;
vector<int> bucketsMin(m, INT_MAX);
vector<int> bucketsMax(m, INT_MIN);
for (int num : nums)
{
int k = (num - l) / gap;
if (num < bucketsMin[k])
bucketsMin[k] = num;
if (num > bucketsMax[k])
bucketsMax[k] = num;
}
int i = 0, j;
gap = bucketsMax[0] - bucketsMin[0];
cout<<gap;
while (i < m) {
j = i + 1;
while (j < m && bucketsMin[j] == INT_MAX && bucketsMax[j] == INT_MIN)
j++;
if (j == m) break;
gap = max(gap, bucketsMin[j] - bucketsMax[i]);
i = j;
}
// return gap;
}
int main()
{
vector<int> v={3,6,9,1};
solve(v);//<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgc29sdmUodmVjdG9yPGludD4gbnVtcykKewoJaW50IG4gPSBudW1zLnNpemUoKTsKICAgICAgICAKICAgICAgICBhdXRvIGx1ID0gbWlubWF4X2VsZW1lbnQobnVtcy5iZWdpbigpLCBudW1zLmVuZCgpKTsKICAgICAgICAKICAgICAgICBpbnQgbCA9ICpsdS5maXJzdCwgdSA9ICpsdS5zZWNvbmQ7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgaW50IGdhcCA9IG1heCgodSAtIGwpIC8gKG4gLSAxKSwgMSk7CiAgICAgICAgaW50IG0gPSAodSAtIGwpIC8gZ2FwICsgMTsKICAgICAgICAKICAgICAgICAKICAgICAgICB2ZWN0b3I8aW50PiBidWNrZXRzTWluKG0sIElOVF9NQVgpOwogICAgICAgIHZlY3RvcjxpbnQ+IGJ1Y2tldHNNYXgobSwgSU5UX01JTik7CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgbnVtIDogbnVtcykgCiAgICAgICAgewogICAgICAgICAgICBpbnQgayA9IChudW0gLSBsKSAvIGdhcDsKICAgICAgICAgICAKICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChudW0gPCBidWNrZXRzTWluW2tdKSAKICAgICAgICAgICAgICAgYnVja2V0c01pbltrXSA9IG51bTsKICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChudW0gPiBidWNrZXRzTWF4W2tdKSAKICAgICAgICAgICAgICAgIGJ1Y2tldHNNYXhba10gPSBudW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIGludCBpID0gMCwgajsgCiAgICAgICAgCiAgICAgICAgZ2FwID0gYnVja2V0c01heFswXSAtIGJ1Y2tldHNNaW5bMF07CiAgICAgICAgY291dDw8Z2FwOwogICAgICAgIHdoaWxlIChpIDwgbSkgewogICAgICAgICAgICBqID0gaSArIDE7CiAgICAgICAgICAgIHdoaWxlIChqIDwgbSAmJiBidWNrZXRzTWluW2pdID09IElOVF9NQVggJiYgYnVja2V0c01heFtqXSA9PSBJTlRfTUlOKQogICAgICAgICAgICAgICAgaisrOwogICAgICAgICAgICBpZiAoaiA9PSBtKSBicmVhazsKICAgICAgICAgICAgZ2FwID0gbWF4KGdhcCwgYnVja2V0c01pbltqXSAtIGJ1Y2tldHNNYXhbaV0pOwogICAgICAgICAgICBpID0gajsKICAgICAgICB9CiAgICAgICAKICAgICAgIC8vIHJldHVybiBnYXA7Cn0KaW50IG1haW4oKSAKewoJdmVjdG9yPGludD4gdj17Myw2LDksMX07Cglzb2x2ZSh2KTsvLzw8IlxuIjsKCQoJcmV0dXJuIDA7Cn0=