# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1020412 | 2024-07-12T04:08:48 Z | nathan4690 | Tree Rotations (POI11_rot) | C++17 | 44 ms | 65536 KB |
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ll long long #define pll ll #define ld long double #define el cout << '\n' #define f1(i,n) for(ll i=1;i<=n;i++) #define __file_name "" using namespace std; using namespace __gnu_pbds; #define ordered_set tree<pll, null_type, less<pll>, rb_tree_tag, tree_order_statistics_node_update> using namespace std; const ll maxn = 1e6+5, inf=1e18; ll n,a[maxn]; vector<ll> G[maxn]; ordered_set values[maxn]; ll dfs(ll u, ll p){ if(a[u]){ // cout << u << ' ' << a[u];el; values[u].insert(a[u]); return 0; } ll resp = 0; ll le = 0, ri = 0; for(ll c: G[u]){ if(c != p){ resp += dfs(c, u); if(le == 0) le = c; else ri = c; } } if(values[ri].size() < values[le].size()) swap(values[ri], values[le]); // le < ri ll res1 = 0, res2 = 0; // res1: count inversion if le comes before ri // res2: count inversions if le comes after ri for(auto item: values[le]){ res1 += values[ri].order_of_key(item); res2 += values[ri].size() - values[ri].order_of_key(item+1); } // cout << u << ' ' << res1 << ' ' << res2;el; for(ll c: G[u]){ if(c != p){ if(values[c].size() > values[u].size()) values[u].swap(values[c]); for(auto item: values[c]){ values[u].insert(item); } } } return resp + min(res1, res2); } ll timer = 0; ll readInput(){ ll v; cin >> v; ll myval = timer; timer++; if(v){ a[myval] = v; }else{ ll c1 = readInput(), c2 = readInput(); G[c1].push_back(myval); G[myval].push_back(c1); G[c2].push_back(myval); G[myval].push_back(c2); } return myval; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); if(fopen(__file_name ".inp", "r")){ freopen(__file_name ".inp","r",stdin); freopen(__file_name ".out","w",stdout); } // code here cin >> n; timer = 1; ll root = readInput(); cout << dfs(root, 0); return 0; } /* Code by: Nguyen Viet Trung Nhan Cau Giay Secondary School */
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 35 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 35 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 44 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 37 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 36 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 37 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 42 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 37 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 42 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 43 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 41 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |