所以什么叫百密一疏——送给各种21~25因为没有开ll而WA的大佬
查看原帖
所以什么叫百密一疏——送给各种21~25因为没有开ll而WA的大佬
327193
golden_alpaca楼主2021/9/23 19:10

先看我的八十分

#include<bits/stdc++.h>
using namespace std;

const int N=100005;

typedef long long ll;

ll a[N],n,m,p1,s1,s2;

inline ll read(){
    ll a=0ll;char c=getchar();
    while(!isdigit(c))c=getchar();
    while(isdigit(c))a=a*10ll+c-'0',c=getchar();
    return a;
}

ll sumlong,sumhu;
ll minn=1000000000000000000ll,ans=1;

inline ll abss(ll a){
    return a>0?a:-a;
}

int main(){
 //   freopen("p5016_21.in","r",stdin);
    n=read();
    for(int i=1;i<=n;i++)a[i]=read();
    m=read(),p1=read(),s1=read(),s2=read();
    for(int i=1;i<m;i++){
        sumlong+=(m-i)*a[i];
    }
    for(int i=m+1;i<=n;i++){
        sumhu+=(i-m)*a[i];
    }
    if(p1<m)sumlong+=(m-p1)*s1;
    else if(p1>m)sumhu+=(p1-m)*s1;
    for(int i=1;i<=n;i++){
        int tmp;
        if(i<m){
            tmp=abss(sumlong+(m-i)*s2-sumhu);
        }else if(i>m){
            tmp=abss(sumlong-sumhu-(i-m)*s2);
        }else tmp=abss(sumlong-sumhu);
        if(tmp<minn){
            minn=tmp;
            ans=i;
        }
    }
    cout<<ans<<endl;
    return 0;
}

呵呵所以明明开了LONGLONG结果。。。

其实百密一疏TMP明明是int类型啊啊啊 然后改了就AC了QWQ

2021/9/23 19:10
加载中...