답안 #252695

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
252695 2020-07-26T06:50:12 Z islingr Vudu (COCI15_vudu) C++14
42 / 140
271 ms 8184 KB
#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;
int a[N], tmp[N], 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);

	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

vudu.cpp: In function 'll solve(int, int)':
vudu.cpp:21:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  int m = l + r >> 1;
          ~~^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Incorrect 261 ms 7968 KB Output isn't correct
5 Incorrect 147 ms 4728 KB Output isn't correct
6 Incorrect 225 ms 7032 KB Output isn't correct
7 Incorrect 234 ms 7416 KB Output isn't correct
8 Incorrect 206 ms 6392 KB Output isn't correct
9 Incorrect 271 ms 8184 KB Output isn't correct
10 Incorrect 227 ms 7144 KB Output isn't correct