Submission #231724

# Submission time Handle Problem Language Result Execution time Memory
231724 2020-05-14T14:39:19 Z border Ball Machine (BOI13_ballmachine) C++14
16.1111 / 100
210 ms 131076 KB
#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp> // Common file
// #include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
 
using namespace std;
// using namespace __gnu_pbds;
 
#define debug(s) cerr << #s << " = " << s << '\n'
#define all(v) (v).begin(), (v).end()
#define mem(a,val) memset(a, val, sizeof a)
 
#define ff first
#define ss second
typedef long long ll;
 
// typedef tree<pair<int, int>,null_type,less<pair<int, int>>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;

const int N = 100010;

int n, q, ptr, root;
int T[N], P[N][20], col[N], val[N];
vector<int> adj[N];
set<pair<int, int>> s;

struct dat {
  int val, node;
  bool operator<(const dat &a) const {
    return val > a.val;
  }
};

int dfs0(int from, int u) {
  priority_queue<dat> pq;
  for (auto v: adj[u]) {
    if (v == from) continue;
    pq.push({dfs0(v, u), v});
  }
  adj[u].clear();
  int ret = u;
  while (!pq.empty()) {
    adj[u].push_back(pq.top().node);
    ret = min(ret, pq.top().val);
    pq.pop();
  }
}

void dfs(int from, int u) {
  T[u] = from;
  for (auto v: adj[u]){
    if (v == from) continue;
    dfs(u, v);
  }
  val[u] = ptr;
  s.insert({ptr++, u});
}

void init() {
  int i, j;
  for (i = 1; i <= n; i++)
    for (j = 0; j < 18; j++)
      P[i][j] = -1;
  for (i = 1; i <= n; i++)
    P[i][0] = T[i];
  for (j = 1; j < 18; j++)
    for (i = 1; i <= n; i++)
      if (P[i][j - 1] != -1)
        P[i][j] = P[P[i][j - 1]][j - 1];
}


int main() {
  scanf("%d %d", &n, &q);
  for (int i = 1; i <= n; ++i) {
    int x;
    scanf("%d", &x);
    if (x == 0) root = i;
    adj[x].push_back(i);
  }
  dfs0(-1, root);
  dfs(-1, root);
  init();
  while (q--) {
    int ty, v;
    scanf("%d %d", &ty, &v);
    if (ty == 1) {
      int ret;
      while (v--) {
        int node = (*s.begin()).ss;
        col[node] = 1;
        ret = node;
        s.erase({val[node], node});
      }
      printf("%d\n", ret);
    }
    else {
      int ret = 0;
      for (int i = 16; i >= 0; --i) {
        if (col[P[v][i]]) {
          ret += (1 << i);
          v = P[v][i];
        }
      }
      col[v] = 0;
      s.insert({val[v], v});
      printf("%d\n", ret);
    }
  }
}

Compilation message

ballmachine.cpp: In function 'int dfs0(int, int)':
ballmachine.cpp:45:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
ballmachine.cpp: In function 'int main()':
ballmachine.cpp:72:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d", &n, &q);
   ~~~~~^~~~~~~~~~~~~~~~~
ballmachine.cpp:75:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &x);
     ~~~~~^~~~~~~~~~
ballmachine.cpp:84:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &ty, &v);
     ~~~~~^~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Runtime error 80 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Runtime error 98 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Runtime error 93 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
4 Runtime error 85 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
5 Runtime error 80 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
6 Runtime error 76 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
7 Runtime error 80 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
8 Runtime error 76 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
9 Runtime error 89 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
10 Runtime error 84 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
11 Runtime error 92 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
12 Runtime error 97 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
13 Runtime error 93 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Correct 49 ms 7672 KB Output is correct
2 Runtime error 97 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Runtime error 102 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
4 Runtime error 96 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
5 Runtime error 85 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
6 Incorrect 76 ms 9336 KB Output isn't correct
7 Runtime error 108 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
8 Correct 51 ms 7672 KB Output is correct
9 Runtime error 97 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
10 Runtime error 99 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
11 Incorrect 160 ms 23032 KB Output isn't correct
12 Runtime error 104 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
13 Correct 114 ms 24184 KB Output is correct
14 Runtime error 94 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Runtime error 85 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Runtime error 103 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Correct 139 ms 22392 KB Output is correct
4 Runtime error 97 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
5 Runtime error 96 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
6 Runtime error 95 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
7 Runtime error 92 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
8 Correct 140 ms 22520 KB Output is correct
9 Runtime error 98 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
10 Incorrect 206 ms 23184 KB Output isn't correct
11 Incorrect 210 ms 23176 KB Output isn't correct
12 Runtime error 102 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
13 Correct 201 ms 27640 KB Output is correct
14 Runtime error 96 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
# Verdict Execution time Memory Grader output
1 Runtime error 103 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Runtime error 102 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Correct 131 ms 27000 KB Output is correct
4 Runtime error 99 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
5 Incorrect 203 ms 23276 KB Output isn't correct
6 Runtime error 104 ms 131072 KB Execution killed with signal 9 (could be triggered by violating memory limits)
7 Runtime error 104 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)
8 Correct 134 ms 27000 KB Output is correct
9 Runtime error 97 ms 131076 KB Execution killed with signal 9 (could be triggered by violating memory limits)