我在最后求和的时候采用了如下比较的方法
for (int i = 0; i < m - 1; i++)
{
int next = a[i + 1];
ans += a[i] > a[i + 1] ? sum[a[i] - 1] - sum[a[i + 1] - 1] : sum[a[i + 1] - 1] - sum[a[i] - 1];
}
不知道是不是在这种比较大小里
ans = a > b ? sum[a]-sum[b] : sum[b]-sum[a]
对于返回给ans的(sum[a] - sum[b])并没有用long long返回所以就出错了
如果改成
for (ll i = 0; i < m - 1; i++)
{
ll next = a[i + 1];
if (a[i] > a[i + 1])
ans += sum[a[i] - 1] - sum[a[i + 1] - 1];
else
ans += sum[a[i + 1] - 1] - sum[a[i] - 1];
}
就对了
或者在前面加ll也能对
for (ll i = 0; i < m - 1; i++)
{
ll next = a[i + 1];
ans += a[i] > a[i + 1] ? (ll)sum[a[i] - 1] - (ll)sum[a[i + 1] - 1] : (ll)sum[a[i + 1] - 1] - (ll)sum[a[i] - 1];
}
同理 max和min函数应该也要这样做