Submission #766366

#TimeUsernameProblemLanguageResultExecution timeMemory
766366Chal1shkanUntitled (POI11_rot)C++14
100 / 100
132 ms19168 KiB
//Bismillahir-Rahmanir-Rahim # include <bits/stdc++.h> # define pb push_back # define ff first # define ss second # define nl "\n" # define sz(x) ((int)(x).size()) # define all(x) (x).begin(), (x).end() # define deb(x) cerr << #x << " = " << x << endl; # define pll pair <ll, ll> # define pii pair <int, int> typedef long long ll; typedef unsigned long long ull; typedef long double ld; const ll maxn = 1e6 + 2; const ll inf = 2e18 + 0; const ll mod = 1e9 + 7; const ll dx[] = {-1, 1, 0, 0}; const ll dy[] = {0, 0, -1, 1}; using namespace std; ll n, nv; ll L[maxn]; ll R[maxn]; ll sz[maxn]; ll cnt[maxn]; ll t[maxn]; ll dp[maxn]; void upd (ll id, ll x) { for (; id < maxn; id |= (id + 1)) { t[id] += x; } } ll get (ll id) { ll res = 0; for (; id >= 1; id = (id & (id + 1)) - 1) { res += t[id]; } return res; } void calc (ll v = n + 1) { if (v <= n) { sz[v] = 1, cnt[v] = 1; return; } calc(L[v]); calc(R[v]); sz[v] = sz[L[v]] + sz[R[v]] + 1; cnt[v] = cnt[L[v]] + cnt[R[v]]; } void updv (ll v, ll x) { if (v <= n) { upd(v, x); return; } updv(L[v], x); updv(R[v], x); } ll count (ll v) { if (v <= n) return get(v); return count(L[v]) + count(R[v]); } void dfs (ll v = n + 1, bool keep = 1) { if (v <= n) { if (keep) { updv(v, 1); } return; } if (sz[L[v]] < sz[R[v]]) { swap(L[v], R[v]); } dfs(R[v], 0); dfs(L[v], 1); ll inv = count(R[v]); dp[v] = dp[L[v]] + dp[R[v]] + min(inv, cnt[L[v]] * cnt[R[v]] - inv); if (keep) { updv(R[v], 1); } else { updv(L[v], -1); } } ll rec () { ll x; cin >> x; if (!x) { ll v = ++nv; L[v] = rec (); R[v] = rec (); return v; } return x; } void ma1n (/* SABR */) { cin >> n; nv = n; rec (); calc (); dfs (); cout << dp[n + 1]; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); // freopen("file.in", "r", stdin); // freopen("file.out", "w", stdout); ll ttt = 1; // cin >> ttt; for (int test = 1; test <= ttt; ++test) { // cout << "Case " << test << ":" << '\n'; ma1n(); } return 0; } // 998batrr | BbIWEJI 3A TObOU!!! // tourist | BbIWEJI 3A TObOU!!!
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...