40分求助,谢谢
查看原帖
40分求助,谢谢
649111
封禁用户楼主2022/8/24 15:25
#include <bits/stdc++.h>
using namespace std;
long long a,b,c,d,e,f,g,ls,maxx=1e+9,summ;
long long l,h;
long long hh[100050],hhh[100050];
long long main(){
	cin>>a;
    for(int i=1;i<=a;i++){
        cin>>hh[i];
    }
    cin>>b>>c>>d>>e;//双方以 b 分界, d 位工兵突然出现在了 c 号兵营,并将你手里的 e 位工兵全部派往兵营 maxx
    for(int i=1;i<b;i++){
        if(i==c){
            l+=(hh[i]+d)*(b-i);
        }
        else
            l+=hh[i]*(b-i);
    } 
    for(int i=b+1;i<=a;i++){
        if(i==c){
            h+=(hh[i]+d)*(i-b);
        }
        else
            h+=hh[i]*(i-b);
    } 
    //cout<<l<<" "<<h<<endl;   
    if(l==h){
        cout<<b;
    }
    else if(l>h){
        ls=h;
        for(int i=b+1;i<=a;i++){
            ls=h;
            ls+=e*(i-b);
            if(max(l,h)-min(l,h)<maxx){
                maxx=min(maxx,max(l,h)-min(l,h));
                summ=i;
            }
        }         
    }
    else if(l<h){
        ls=l;
        for(int i=1;i<=b-1;i++){
            ls=l;
            ls+=e*(b-i);
            if(max(ls,h)-min(ls,h)<maxx){
                //cout<<i<<" "<<e*(b-i)<<endl;
                maxx=min(maxx,max(ls,h)-min(ls,h));
                summ=i;
            }
        }         
    }
    cout<<summ;
}
2022/8/24 15:25
加载中...