# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1164082 | s3yoonpark | Arranging Shoes (IOI19_shoes) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#define int long long
#define ssize(x) (int)x.size()
using namespace std;
const int N = 1E5 + 5;
int n;
map<int,queue<int>> st;
bool processed[N];
struct Node {
Node *l, *r;
int val;
Node (int v) { val = v, l = nullptr, r = nullptr; }
Node (Node *ll, Node *rr) {
l = ll, r = rr;
val = 0;
if (l != nullptr) val = val + l->val;
if (r != nullptr) val = val + r->val;
}
Node (Node *cp) { val = cp->val, l = cp->l, r = cp->r; }
};
void build (Node* t, int l = 1, int r = n) {
if (l == r) {
t->val = 1ll;
return;
}
t->l = new Node(0ll), t->r = new Node(0ll);
int mid = (l + r) / 2;
build(t->l, l, mid);
build(t->r, mid + 1, r);
t->val = t->l->val + t->r->val;