# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
906324 | bobbilyking | Arranging Shoes (IOI19_shoes) | C++17 | 695 ms | 44024 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define F(i, l, r) for (ll i = l; i < (r); ++i)
using vl = vector<ll>;
#define A(a) (a).begin(), (a).end()
//GCC extensions
#include <bits/extc++.h>
using namespace __gnu_cxx;
using namespace __gnu_pbds;
// order stats tree
// find_by_order(i) returns ptr
// order_of_key(key) return int
typedef tree<ll, null_type, less<ll>,
rb_tree_tag, tree_order_statistics_node_update> set_t;
long long count_swaps(std::vector<int> s) {
ll n = s.size()/2;
map<ll, set<ll>> positions;
set_t active_nodes;
F(i, 0, s.size()) {
positions[s[i]].insert(i);
active_nodes.insert(i);
}
ll ans = 0;
F(i, 0, n) {
auto si = *active_nodes.begin();
auto iterator = positions[-s[si]].begin();
positions[s[si]].erase(si);
positions[-s[si]].erase(iterator);
auto it = *iterator;
if (s[si] < 0) {
ans += active_nodes.order_of_key(it) - 1;
} else {
ans += active_nodes.order_of_key(it) ;
}
active_nodes.erase(active_nodes.begin());
active_nodes.erase(active_nodes.find(it));
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |