本文最后更新于 1114 天前,其中的信息可能已经有所发展或是发生改变。
要让两个区域最大值之差最大,就要让其中一个区域最大值尽可能大,另一个区域的最大值尽可能小。
要让最大值最大,这个值很明显就是整个数组的最大值。
要让最大值最小,这个区域只能有一个数字。因为如果新加入的值比第一个数字大,那么还不如不加入;如果新加入的值比第一个数字小,也没有任何意义(因为这个区域的最大值还是第一个数字)
所以最佳策略就是一个区域包含1个建筑(第一个建筑或最后一个建筑),另一个区域包含其余建筑。
int main()
{
int T;
cin >> T;
ll first, max1, temp;
cin >> first;
max1 = first;
for (int i = 2; i <= T; i++)
{
cin >> temp;
max1 = max(max1, temp);
}
cout << max(abs(max1 - first), abs(max1 - temp)) << "\n";
return 0;
}