怎么搞的就40pts
#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
typedef long long ll;
int n;
int a[500001];
int b[500001];
ll sum1[500001], sum2[500001];
ll orz1[500001], orz2[500001];
ll total[500001];
ll ans = 0;
int main()
{
speed: std::ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
sum1[i] = (sum1[i - 1] + a[i]) % mod;
}
for(int i = 1; i <= n; i++)
{
cin >> b[i];
sum2[i] = (sum2[i - 1] + b[i]) % mod;
}
for(int i = 1; i <= n; i++)
{
orz1[i] = (orz1[i - 1] + sum1[i]) % mod;
orz2[i] = (orz2[i - 1] + sum2[i]) % mod;
total[i] = (total[i - 1] + sum1[i] * sum2[i] % mod) % mod;
}
for(int i = 1; i <= n; i++)
{
ll a, b, c, d;
a = (total[n] - total[i - 1] + mod) % mod;
b = (sum1[i - 1] * (orz2[n] - orz2[i - 1] + mod) % mod) % mod;
c = (sum2[i - 1] * (orz1[n] - orz1[i - 1] + mod) % mod) % mod;
d = ((n - i + 1) * (sum1[i - 1] * sum2[i - 1]) % mod) % mod;
ans = (ans + a - b - c + d + mod) % mod;
}
cout << ans;
return 0;
}
就前四个AC了。。。