80分求助
查看原帖
80分求助
553871
JMxxxx楼主2023/10/6 00:03
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[100010];
ll check(ll t)
{
    if(t<0)
    {
        return -t;
    }
    else
    {
        return t;
    }
}
int main()
{
    int num;
    int minn=INT_MAX;
    ll sum1=0,sum2=0;
    cin>>num;
    for(int i=1;i<=num;i++)
    {
        cin>>a[i];
    }
    int m,p1,s1,s2;
    cin>>m>>p1>>s1>>s2;
    for(int i=1;i<m;i++)
    {
        if(i==p1)
        {
            sum1+=s1*(m-i);
        }
        sum1=sum1+a[i]*(m-i);
    }
    for(int i=m+1;i<=num;i++)
    {
        if(i==p1)
        {
            sum2+=s1*(i-m);
        }
        sum2=sum2+a[i]*(i-m);
    }
    minn=check(sum2-sum1);
    int tep=m;
    //cout<<sum1<<" "<<sum2<<endl;
    if(sum1==sum2)
    {
        cout<<m;
        return 0;
    }
    else if(sum2>sum1)
    {
        for(int i=1;i<m;i++)
        {
            long long x=check((sum1+(m-i)*s2)-sum2);
            if(minn>x)
            {
                minn=x;
                tep=i;
            }
            //cout<<endl<<minn<<endl;
        }
    }
    else if(sum2<sum1)
    {
        for(int i=m+1;i<=num;i++)
        {
            long long x=check((sum1+(m-i)*s2)-sum2);
            if(minn>x)
            {
                minn=x;
                tep=i;
            }
        }
    }
    cout<<tep;
}
2023/10/6 00:03
加载中...