# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
319062 | 2020-11-03T20:26:52 Z | Fischer | Vudu (COCI15_vudu) | C++14 | 301 ms | 15972 KB |
#include <bits/stdc++.h> using namespace std; const int maxn = 1e6 + 10; using ll = long long; ll a[maxn]; int n, p; int ft[maxn]; void upd(int pos, int v) { while (pos < maxn) { ft[pos] += v; pos += pos&-pos; } } int qry(int pos) { int ans = 0; while (pos > 0) { ans += ft[pos]; pos -= pos&-pos; } return ans; } int main() { scanf("%d", &n); vector<int> id(n + 1); iota(id.begin(), id.end(), 0); for (int i = 1; i <= n; ++i) { scanf("%lld\n", a+i); a[i] += a[i-1]; } scanf("%d", &p); sort(id.begin(), id.end(), [](int i, int j) { return a[i] - i *1ll* p < a[j] - j *1ll* p; }); long long ans = 0; for (int i : id) { ans += qry(i); upd(i + 1, 1); } printf("%lld\n", ans); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 492 KB | Output isn't correct |
2 | Incorrect | 2 ms | 492 KB | Output isn't correct |
3 | Incorrect | 2 ms | 492 KB | Output isn't correct |
4 | Incorrect | 301 ms | 15460 KB | Output isn't correct |
5 | Incorrect | 159 ms | 8932 KB | Output isn't correct |
6 | Correct | 259 ms | 13796 KB | Output is correct |
7 | Incorrect | 264 ms | 14308 KB | Output isn't correct |
8 | Correct | 225 ms | 12388 KB | Output is correct |
9 | Incorrect | 295 ms | 15972 KB | Output isn't correct |
10 | Incorrect | 253 ms | 14052 KB | Output isn't correct |