#include #include #include using namespace std; int max_gain(const vector &a, const int l, const int r, int &min_a, int &max_a) { if (r - l < 1) { min_a = a[l]; max_a = a[l]; return 0; } int mid = l + (r - l) / 2; int min_l, max_l; int res_l = max_gain(a, l, mid, min_l, max_l); int min_r, max_r; int res_r = max_gain(a, mid + 1, r, min_r, max_r); min_a = min(min_l, min_r); max_a = max(max_l, max_r); return max({ res_l, res_r, max_r - min_l }); } int max_gain(const vector &a) { int min, max; return max_gain(a, 0, a.size() - 1, min, max); } int main(void) { int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } cout << max_gain(a) << endl; return 0; }