Submission #1210668

#TimeUsernameProblemLanguageResultExecution timeMemory
1210668trimkusTree (IOI24_tree)C++20
7 / 100
376 ms19992 KiB
#include "tree.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;


int N;
vector<int> W;
vector<vector<int>> adj;
vector<int> P;

int cnt;
void init(vector<int> _P, vector<int> _W) {
    P = _P;
    P[0] = -1;

    W = _W;
    N = (int)P.size();

    adj.assign(N, {});
    for (int i = 1; i < N; i++) {
        adj[P[i]].push_back(i);
        adj[i].push_back(P[i]);
    }
    for (int i = 1; i < N; ++i) {
      if ((int)adj[i].size() == 1) {
        cnt++;
      }
    }
}


long long query(int L, int R) {
    cerr << "Query " << L << " " << R << "\n";

    ll res = 1LL * cnt * L + max(0LL, 1LL * cnt * L - R);
    return res;
}

#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...