# 蒟蒻4分求助
查看原帖
# 蒟蒻4分求助
886310
Ghost_Death楼主2023/6/26 19:59
#include<iostream>
#define ull long long
using namespace std;
long long n,c[100005],_C[100005],C_[100005];
int _Cnt,C_nt,maxx,cntmax,cnti;
int m,s_1,p_1,s_2;
ull merge(int i){
    if(i<m){
        for(int j = 1;j<m;j++){
            if(j == p_1){
                _Cnt+=(_C[j]+s_2)*(m-j);
                continue;
            }
            _Cnt+=_C[j]*(m-j);
        }
        return _Cnt;
    }
    else if(i>m){
        for(int j = m+1;j<=n;j++){
            if(j == p_1){
                C_nt+=(C_[j]+s_2)*(j-m);
                continue;
            }
            C_nt+=_C[j]*(j-m);
        }
        return C_nt;
    }
}
int main(){
    cin>>n;
    for(int i = 1;i<=n;i++){
        cin>>c[i];
    }
    cin>>m>>p_1>>s_1>>s_2;
    for(int i = 1;i<m;i++){
        _C[i] = c[i];
    }
    for(int i = m+1;i<=n;i++){
        C_[i] = c[i];
    }
    if(p_1<m){
        for(int i = 1;i<m;i++){
            if(i == p_1){
                _Cnt+=(_C[i]+s_1)*(m-i);
                continue;
            }
            _Cnt+=_C[i]*(m-i);
        }
    }
    else if(p_1>m){
        for(int i = m+1;i<=n;i++){
            if(i == p_1){
                C_nt+=(C_[i]+s_1)*(i-m);
                continue;
            }
            C_nt+=_C[i]*(i-m);
        }
    }
    int ns = merge(1);
    int ma = max(ns,C_nt);
    int mi = min(ns,C_nt);
    cntmax = ma-mi;
    for(int i = 1;i<=n;i++){
        if(i == m){
            continue;
        }
        int n = merge(i);
        if(i<m){
            int maxx = max(n,C_nt);
            int minn = min(n,C_nt);
            if(maxx-minn<cntmax){
                cntmax = maxx-minn;
                cnti = i;
            }
        }
        else if(i>m){
            int maxx = max(n,_Cnt);
            int minn = min(n,_Cnt);
            if(maxx-minn<cntmax){
                cntmax = maxx-minn;
                cnti = i;
            }
        }
    }
    cout<<cnti;
    return 0;
}
2023/6/26 19:59
加载中...