Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- using namespace std;
- const int N = 1e5 + 5;
- int n, m;
- int a[N];
- pair<int, int> b[N];
- ll sb[N], sj[N], sbj[N];
- int main() {
- //freopen("in.txt", "r", stdin);
- freopen("METRICS.inp", "r", stdin);
- freopen("METRICS.out", "w", stdout);
- ios_base::sync_with_stdio(false);
- cin.tie(NULL); cout.tie(NULL);
- cin >> n;
- for(int i = 1; i <= n; ++i)
- cin >> a[i];
- cin >> m;
- for(int j = 1; j <= m; ++j){
- cin >> b[j].first;
- b[j].second = j;
- }
- sort(b + 1, b + m + 1);
- for(int i = 1; i <= m; ++i){
- sb[i] = sb[i-1] + b[i].first;
- sj[i] = sj[i-1] + b[i].second;
- sbj[i] = sbj[i-1] + b[i].first * b[i].second;
- }
- ll ans = 0;
- for(int i = 1; i <= n; ++i){
- int k = upper_bound(b, b+m+1, make_pair(a[i], 0)) - b - 1;
- k = max(k, 0);
- ans += 1LL * a[i]*i*k + sbj[k];
- ans -= a[i]*sj[k] + i*sb[k];
- ans -= 1LL * a[i]*i*(m-k) + (sbj[m]-sbj[k]);
- ans += a[i]*(sj[m]-sj[k]) + i*(sb[m]-sb[k]);
- }
- cout << ans;
- return 0;
- }
Add Comment
Please, Sign In to add comment