代码如下,题目说ci最大10的9次方,且我代码中没有对数组赋入更大的值,为啥int不行,而必须改成long long呢?谢谢各位大神。
#include<bits/stdc++.h>
using namespace std;
const int SIZE = 1e5+5;
const long long INF = 1e20;
long long road[SIZE];//这里不变成long long,最后5个点过不去
int main()
{
int n;
int m;
int p1;//s1天降到的兵营
long long s1;//s1个天降工兵数
long long s2;//我手里的兵数
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>road[i];
}
cin>>m>>p1>>s1>>s2;
long long long_tol=0,hu_tol=0;
int pox=-1;
for(int i=1;i<m;i++)
{
long_tol+=road[i]*(m-i);
}
for(int i=m+1;i<=n;i++)
{
hu_tol+=road[i]*(i-m);
}
if(p1>m)
{
hu_tol+=s1*(p1-m);
}
if(p1<m)
{
long_tol+=s1*(m-p1);
}
long long min=INF;
if(hu_tol<long_tol)
{
for(int i=m;i<=n;i++)
{
long long tmp = abs((hu_tol+s2*(i-m))-long_tol);
if(tmp<min)
{
min = tmp;
pox = i;
}
}
}
else if(hu_tol>long_tol)
{
for(int i=1;i<=m;i++)
{
long long tmp = abs((long_tol+s2*(m-i))-hu_tol);
if(tmp<min)
{
min = tmp;
pox = i;
}
}
}
else
{
pox=m;
}
cout<<pox;
return 0;
}