Submission #797923

#TimeUsernameProblemLanguageResultExecution timeMemory
797923vjudge1Construction of Highway (JOI18_construction)C++17
0 / 100
0 ms212 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N = 5000; int n; int p[N]; int C[N]; int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin >> n; for(int i = 1; i <= n; i++) cin >> C[i]; for(int i = 1; i <= n - 1; i++) { int A, B; cin >> A >> B; vector<int> vals; int cur = A; while(cur) { vals.push_back(cur); cur = p[cur]; } reverse(vals.begin(), vals.end()); ll res = 0; int bound = 0; for(int j : vals) { while(C[vals[bound]] > C[j]) { bound++; } res += bound; } p[B] = A; cur = A; while(cur) { C[cur] = C[B]; cur = p[cur]; } cout << res << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...