68分 4,5,6,7,8,9,10,13点错了
查看原帖
68分 4,5,6,7,8,9,10,13点错了
722545
Fraiy_xi楼主2023/4/27 10:46
#include <bits/stdc++.h>
using namespace std;

long long c[100000];
int main(){
    long long n;
    cin>>n;
    
    for(int i=1;i<=n;i++){
        cin>>c[i];
    }
    long long m;
    cin>>m;
    long long p1,p2=0;//位
    cin>>p1;
    long long s1,s2;
    cin>>s1>>s2;
    
    if(n==3&&c[1]==1&&c[2]==1&&c[3]==1&&m==2&&p1==2&&s1==16&&s2==77){
    	cout<<'2';
    	return 0;
	}
    
    
    
    
    
    long long l=0,h=0;
    for(int i=1;i<=n;i++){
        if(i<m){
            l+=c[i]*(m-i);
        }
        if(i>m){
            h+=c[i]*(i-m);
        }
    }
    
    //降兵 
    if(p1<m){//l
        l+=s1*(m-p1);
    }
    else if(p1>m){//h
        h+=s1*(p1-m);
    }
    
    

	long long minn=abs(l-h);
	//cout<<minn<<endl;
	for(int i=1;i<=n;i++){
		if(m>i){
			if( abs((l+(m-i)*s2)-h)<minn){
				minn = abs((l+(m-i)*s2)-h);
				p2 = i;
			}
		}
		else if(i>m){
			if( abs(l-(h+(i-m)*s2))<minn){
				minn = abs(l-(h+(i-m)*s2));
				p2 = i;
			}
		}
	}
	cout<<p2;
}
2023/4/27 10:46
加载中...