模拟72分求助(急
  • 板块题目总版
  • 楼主Haber
  • 当前回复4
  • 已保存回复4
  • 发布时间2020/11/2 22:08
  • 上次更新2023/11/5 09:09:59
查看原帖
模拟72分求助(急
345900
Haber楼主2020/11/2 22:08

题目传送门

#include<iostream>
using namespace std;
int main(){
    long long a[100001]={0},n,m,p1,s1,s2;
    long long l=0,h=0,min,minn=1e19,len;
    cin>>n;
    for(long long i=1;i<=n;i++){
        cin>>a[i];
    }
    cin>>m>>p1>>s1>>s2;
    for(long long i=1;i<m;i++){
        l=l+(m-i)*a[i];
    }
    for(long long i=m+1;i<=n;i++){
        h=h+a[i]*(i-m);
    }
    if(p1>m){
        a[p1]=a[p1]+s1;
        h=h+s1*(p1-m);
    }if(p1<m){
        a[p1]=a[p1]+s1;
        l=l+s1*(m-p1);
    }if(l==h){
        cout<<m;
        return 0;
    }else{
    if(l>h){
    for(long long i=m+1;i<=n;i++){
        if(s2*(i-m)+h>l){
        min=s2*(i-m)+h-l;
        }
        if(s2*(i-m)+h==l){
        cout<<i;
        return 0;
        }
        if(s2*(i-m)+h<l){
            min=l-(s2*(i-m)+h);
        }
        if(minn>min){
            minn=min;
            len=i;
            }
        }
        cout<<len;
        return 0;
    }
    for(long long i=1;i<m;i++){
        if(s2*(m-i)+l>h){
            min=s2*(m-i)+l-h;
        }
        if(s2*(m-i)+l==h){
            cout<<i;
        return 0;
        }
        if(s2*(m-i)+l<h){
            min=h-(s2*(m-i)+l);
        }
        if(minn>min){
            minn=min;
            len=i;
        }
    }
    cout<<len;
    return 0;
}
    return 0;
}

查了很久,没查出来

求助dalao!!!

2020/11/2 22:08
加载中...