Submission #636274

#TimeUsernameProblemLanguageResultExecution timeMemory
636274jame0313Untitled (POI11_rot)C++17
36 / 100
1093 ms21828 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; using ld = long double; using pll = pair<ll, ll>; // and so on int arr[400001]; int in[400001]; int out[400001]; vector<vector<int> > mp; int id = -1; int fnd(int s, int e, int v) { return upper_bound(arr + s, arr + e + 1, v) - (arr + s); } int parse(int x) { int c; cin >> c; in[x] = x; if (c == 0) { int l = parse(++id); int r = parse(++id); mp[x].push_back(l); mp[x].push_back(r); } else { arr[x] = c; } out[x] = id; return in[x]; } ll sol(int x) { ll ret = 0; if (arr[x] == 0) { int a = mp[x][0]; int b = mp[x][1]; ret += sol(a) + sol(b); if (out[a] - in[a] < out[b] - in[b]) swap(a, b); ll acnt = 0, bcnt = 0; int zero_cnt = fnd(in[a], out[a], 0); int siz = out[a] - in[a] + 1 - zero_cnt; int pre = in[a]; for (int i = in[b]; i <= out[b]; i++) { if (!arr[i]) continue; int idx = fnd(pre, out[a], arr[i] - 1); int cnt = idx - zero_cnt + (pre - in[a]); pre = in[a] + idx; acnt += cnt; bcnt += siz - cnt; } ret += min(acnt, bcnt); sort(arr + in[x], arr + out[x] + 1); return ret; } else { return 0; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int N; cin >> N; mp.resize(2 * N + 1); int r = parse(++id); cout << sol(r); }
#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...