题意

n个整数 a[ 1 ] ~ a[ n ] 可以进行 m 次操作,每次操作 可以对 图片说明 或是
求m次操作后最大值与最小值差的最大值可能是多少

思路

进行m次操作肯定是对同一个数操作m次,如果操作分散是不能让要求的差最大的

先找到原数组的最大值和最小值,让后对数组每一个数分别操作m次找最大值就好,直接遍历就行

注意特判 n == 1的情况

代码

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
#pragma GCC optimize(3)
typedef long long ll;
#define INF 0x3f3f3f3f
const int mod = 1e9+7;
const int maxn = 1e5+5;
#define stop system("pause")
inline ll read(){
    ll s = 0, w = 1; char ch = getchar();
    while (ch < 48 || ch > 57) { if (ch == '-') w = -1; ch = getchar(); }
    while (ch >= 48 && ch <= 57) s = (s << 1) + (s << 3) + (ch ^ 48), ch = getchar();
    return s * w;
}

ll a[100005];

int main(){
    ll n = read(), m = read();
    ll mini = 1e18, maxi = -1e18;
    for (int i = 1; i <= n; ++i) {
        a[i] = read();
        mini = min(mini, a[i]);
        maxi = max(maxi, a[i]);
    }
    if (n == 1){
        cout<<0<<endl;
        return 0;
    }
    ll ans = 0;
    for (int i = 1; i <= n; ++i) {
        ans = max(ans, maxi - a[i] + m * i);
        ans = max(ans, a[i] + m * i - mini);
    }
    cout<<ans<<endl;
    return 0;
}