Submission #715769

#TimeUsernameProblemLanguageResultExecution timeMemory
715769lukameladzeBall Machine (BOI13_ballmachine)C++14
100 / 100
283 ms37408 KiB
# include <bits/stdc++.h> using namespace std; #define f first #define s second // #define int long long #define pii pair <int, int> #define pb push_back const int N = 3e5 + 5; int t,n,a[N], par[N][20], mn[N], idx[N],q,rt,del[N]; vector <int> v[N],vec, ord; set <int> s; void dfs(int a, int p) { mn[a] = a; par[a][0] = p; for (int i = 1; i <= 18; i++) { if (par[a][i - 1]) par[a][i] = par[par[a][i - 1]][i - 1]; } for (int to : v[a]) { if (to == p) continue; dfs(to, a); mn[a] = min(mn[a], mn[to]); } } bool cmp(int a, int b) { return mn[a] < mn[b]; } void dfs1(int a, int p) { vector <int> vec; for (int to : v[a]) { if (to == p) continue; vec.pb(to); } sort(vec.begin(),vec.end(), cmp); for (int to : vec){ dfs1(to, a); } s.insert(a); ord.pb(a); } main() { std::ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n>>q; for (int i = 1; i <= n; i++) { int p; cin>>p; if (p == 0) { rt = i; continue; } v[i].pb(p); v[p].pb(i); } ord.pb(0); dfs(rt, 0); dfs1(rt, 0); for (int i = 1; i <= n; i++) { idx[ord[i]] = i; } while (q--) { int ty; cin>>ty; if (ty == 1) { int k, ans = 0; cin>>k; while(k--) { int x = ord[*s.begin()]; del[x] = 1; ans = x; s.erase(s.begin()); } cout<<ans<<"\n"; continue; } int cur, ans = 0, x; cin>>x; cur = x; for (int i = 18; i >= 0; i--) { if (par[cur][i] && del[par[cur][i]]) cur = par[cur][i], ans += (1<<i); } del[cur] = 0; s.insert(idx[cur]); cout<<ans<<"\n"; } }

Compilation message (stderr)

ballmachine.cpp:40:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   40 | main() {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...