牛客子数组绝对值的最大值
子数组绝对值的最大值
描述
小红拿到了一个长为
n
n 的数组
a
a,她想知道子数组和的绝对值的最大值是多少,请你帮帮她。
输入描述:
第一行输入一个整数
n
(
1
≦
n
≦
2
×
1
0
5
)
n(1≦n≦2×10
5
)。
第二行输入
n
n 个整数
a
i
(
−
1000
≦
a
i
≦
1000
)
a
i
(−1000≦a
i
≦1000)。
输出描述:
输出一个整数,代表子数组和的绝对值的最大值。
include
include
include
using namespace std;
using ll=long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
ll n;
cin>>n;
vector
for(ll i=0;i<n;i++)cin>>a[i];
vector
vector
madp[0]=a[0];
midp[0]=a[0];
ll mins=midp[0];
ll maxs=madp[0];
for(ll i=1;i<n;i++)
{
madp[i]=max(a[i],madp[i-1]+a[i]);
midp[i]=min(a[i],midp[i-1]+a[i]);
mins=min(mins,midp[i]);
maxs=max(maxs,madp[i]);
}
cout<<max(abs(maxs),abs(mins));
return 0;
}

浙公网安备 33010602011771号