80分求助,最后五个点
查看原帖
80分求助,最后五个点
338147
01bit楼主2020/8/15 15:47
#include<iostream>
#include<cmath>
#define maxn (int(1e5))
#define power(s,p) (s*abs(p-m))
using namespace std;
int n,m,c[maxn+1];
long long lo=0,hu=0;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>c[i];
    }
    int p1,s1,p2,s2;
    cin>>m>>p1>>s1>>s2;
    p2=m;
    c[p1]+=s1;
    for(int i=1;i<=n;i++){
        long long p=c[i]*abs(i-m);
        if(i<m)lo+=p;
        if(m<i)hu+=p;
    }
    long long gap=abs(lo-hu);
    if(lo<hu){
        long long mingap=gap;
        for(int p=1;p<=m-1;p++)
            if(abs(gap-power(s2,p))<mingap){
                mingap=abs(gap-power(s2,p));
                p2=p;
            }
    }
    if(lo>hu){
        long long mingap=gap;
        for(int p=m+1;p<=n;p++)
            if(abs(gap-power(s2,p))<mingap){
                mingap=abs(gap-power(s2,p));
                p2=p;
            }
    }
    cout<<p2;
    return 0;
}
2020/8/15 15:47
加载中...