제출 #636268

#제출 시각아이디문제언어결과실행 시간메모리
636268jame0313Untitled (POI11_rot)C++17
27 / 100
103 ms65536 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[1000001]; int in[1000001]; int out[1000001]; vector<vector<int> > mp; vector<int> lst[2000001]; int id = -1; int fnd(int idx, int v){ return upper_bound(lst[idx].begin(),lst[idx].end(),v) - lst[idx].begin(); } 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(a, 0); int siz = lst[a].size(); for(int i=in[b];i<=out[b];i++){ if(!arr[i]) continue; int cnt = fnd(a,arr[i]) - zero_cnt; acnt += cnt; bcnt += siz - cnt; } ret += min(acnt, bcnt); lst[x] = lst[a]; lst[x].insert(lst[x].end(),lst[b].begin(),lst[b].end()); sort(lst[x].begin(),lst[x].end()); lst[a].clear(); lst[b].clear(); return ret; } else { lst[x] = {arr[x]}; 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...