求助 关于龙虎斗

学术版

是青白呀 @ 2020-10-30 16:43:46

龙虎斗最后五个测试点是错的 求解析

#include<bits/stdc++.h>
using namespace std;
long long n,m,p1,p2,s1,s2,num[100005],minx;
long long d=0,t=0;
int main()
{
    scanf("%lld",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&num[i]);
    }
    scanf("%lld%lld%lld%lld",&m,&p1,&s1,&s2);
    for(int i=1;i<m;i++)
    {
        d+=(m-i)*num[i];
    }
    for(int i=m+1;i<=n;i++)
    {
        t+=(i-m)*num[i];
    }
    if(p1<m)d+=(m-p1)*s1;
    else if(p1>m)t+=(p1-m)*s1;
    int cha;
    int t1,d1;
    t1=t;
    d1=d;
    for(int i=1;i<=n;i++)
    {
        if(i>m)t+=(i-m)*s2;
        else d+=(m-i)*s2;
        if(d>t)cha=d-t;
        else cha=t-d;
        if(i==1)
        {
            minx=cha;
            p2=1;
        }
        if(cha<minx)
        {
            minx=cha;
            p2=i;
        }
        t=t1;
        d=d1;
    }
    printf("%lld",p2);
    return 0;
}

by longlongzhu123 @ 2020-10-30 19:06:12

建议在此发表求助帖:https://www.luogu.com.cn/discuss/lists?forumname=P5016


by so_kids @ 2020-10-31 14:33:55

@是青白呀 中间的cha dl开long long


|