一开始在c++上写的数组用了10000个就卡掉了,结果一试才44分… 最后改成100000个,又多过了几个,但还是64分……
#include<iostream>
#include<cstring>
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
long long m,p1,s1,s2,a[100001],b[100001],lo=0,hu=0,ld[100001],q,hd[100001];
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
cin>>m>>p1>>s1>>s2;
a[p1]=a[p1]+s1;
for(int i=1;i<=n;i++)
{
if(i<m)
{
b[i]=a[i]*(m-i);
lo=lo+b[i];
}
if(i==m)
continue;
if(i>m)
{
b[i]=a[i]*(i-m);
hu=hu+b[i];
}
}
if(lo>hu)
{
long long t=lo-hu;
long long minx=92233720368547758;
for(int i=m+1;i<=n;i++)
{
ld[i]=s2*(i-m);
}
for(int i=m+1;i<=n;i++)
{
if(abs(t-ld[i])<minx)
{
minx=abs(t-ld[i]);
q=i;
}
}
cout<<q;
return 0;
}
else
{
long long t=hu-lo;
long long minx=92233720368547758;
for(int i=0;i<=m-1;i++)
{
hd[i]=s2*(m-i);
}
for(int i=0;i<=m-1;i++)
{
if(abs(t-hd[i])<minx)
{
minx=abs(t-hd[i]);
q=i;
}
}
cout<<q;
return 0;
}
}