Submission #252697

#TimeUsernameProblemLanguageResultExecution timeMemory
252697islingrVudu (COCI15_vudu)C++14
140 / 140
231 ms16248 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using ld = long double;

#define rep(i, a, b) for (auto i = (a); i < (b); ++i)
#define trav(e, x) for (auto &e : x)
#define eb(x...) emplace_back(x)
#define all(x) begin(x), end(x)
#define sz(x) int((x).size())

template<class T> bool ckmin(T& a, const T& b) { return a > b ? a = b, 1 : 0; }
template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }

const int N = 1 << 20;
ll a[N], tmp[N];

ll solve(int l, int r) {
	if (r - l == 1) return 0;
	int m = l + r >> 1;
	ll res = solve(l, m) + solve(m, r);
	int i = l, j = m, k = l;
	while (i < m && j < r)
		if (a[i] <= a[j]) tmp[k++] = a[i++], res += r - j;
		else tmp[k++] = a[j++];
	while (i < m) tmp[k++] = a[i++];
	while (j < r) tmp[k++] = a[j++];
	rep(i, l, r) a[i] = tmp[i];
	return res;
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int n; cin >> n;
	rep(i, 0, n) cin >> a[i + 1];
	int P; cin >> P;
	rep(i, 0, n) a[i + 1] -= P;
	rep(i, 0, n) a[i + 1] += a[i];

	cout << solve(0, n + 1);
}

Compilation message (stderr)

vudu.cpp: In function 'll solve(int, int)':
vudu.cpp:21:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  int m = l + r >> 1;
          ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...