Submission #1309449

#TimeUsernameProblemLanguageResultExecution timeMemory
1309449aaaaaaaaBall Machine (BOI13_ballmachine)C++20
16.23 / 100
61 ms17680 KiB
#include <bits/stdc++.h> using namespace std; const int mxN = 1e5 + 10; vector<int> adj[mxN]; int mn[mxN]; vector<int> ord; void dfs(int u = 1){ mn[u] = u; for(auto it : adj[u]){ dfs(it); mn[u] = min(mn[u], mn[it]); } } void dfs2(int u = 1){ vector<pair<int, int>> val; for(auto it : adj[u]){ val.push_back({mn[it], it}); } sort(val.begin(), val.end()); for(auto it : val){ dfs2(it.second); } ord.push_back(u); } signed main() { ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n, q; cin >> n >> q; for(int i = 1, par; i <= n; ++i){ cin >> par; adj[par].push_back(i); } dfs(); dfs2(); set<pair<int, int>> empty; vector<int> pos(n + 5, 0); for(int i = 0; i < (int) ord.size(); ++i){ empty.insert({i, ord[i]}); pos[ord[i]] = i; } while(q--){ int t, k; cin >> t >> k; if(t == 1){ int last = 0; while(k > empty.size()) { } while(k--){ auto tp = *empty.begin(); empty.erase(tp); last = tp.second; } cout << last << "\n"; }else{ empty.insert({pos[k], k}); cout << "0\n"; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...