题干中说明,对于所有评测用例, 1≤n≤2×105, 1≤ai≤1000
那么对于前缀和数组来说,int类型的前缀和数组应该够用了吧,毕竟最大数据的和最大才2×108 但是实际提交却过不了
这是为啥
错误代码
#include<bits/stdc++.h>
using namespace std;
int n,nums[200010],sum[200010];
long long tot;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for(int i=1;i<=n;i++){
cin>>nums[i];
sum[i]=sum[i-1]+nums[i];
}
for(int i=1;i<=n;i++){
tot+=nums[i]*(sum[n]-sum[i]);
}
cout<<tot<<endl;
return 0;
}
正确代码
#include<bits/stdc++.h>
using namespace std;
int n,nums[200010];
long long sum[200010];
long long tot;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for(int i=1;i<=n;i++){
cin>>nums[i];
sum[i]=sum[i-1]+nums[i];
}
for(int i=1;i<=n;i++){
tot+=nums[i]*(sum[n]-sum[i]);
}
cout<<tot<<endl;
return 0;
}