#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
#define fi first
#define se second
#define pb push_back
const int MOD = 1e9 + 7;
const int MAX = 1e6 + 5;
#define int ll
int seg[MAX];
int n, m, p;
int query(int x){
	int cnt = 0;
	while(x >= 1){
		cnt += seg[x];
		x -= (x & -x);
	}
	
	return cnt;
}
void upd(int x){
	while(x <= m){
		seg[x]++;
		x +=(x & -x);
	}
}
vector <int> v;
int sear(int x){
	int t = lower_bound(v.begin(), v.end(), x) - v.begin() + 1;
	return t;
}
signed main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	
	cin >> n;
	int a[n + 1];
	for(int i = 1 ;i <= n ; i++)cin >> a[i];
	cin >> p;
	
	ll pref = 0, ans = 0;
	for(int i = 1 ; i <= n ; i++){
		pref += a[i];
		a[i] = pref - p*i;
		v.pb(a[i]);
	}
	v.pb(0);
	sort(v.begin(), v.end());
	v.erase(unique(v.begin(), v.end()), v.end());
	m = (int)v.size();
	
	upd(sear(0));
	for(int i = 1 ; i <= n ; i++){
		ans += query(sear(a[i]));
		upd(sear(a[i]));
	}
	cout << ans << endl;
	
	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |