Submission #1226855

#TimeUsernameProblemLanguageResultExecution timeMemory
1226855Ahmed_KaanicheConstruction of Highway (JOI18_construction)C++20
16 / 100
2101 ms192132 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; #define ll long long #define fi first #define se second #define pb push_back #define endl "\n" template<typename T> using ord_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; int main() { //the booster of input and output ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); // freopen("In.in", "r", stdin); // freopen("Out.out", "w", stdout); //the body ll n; cin >> n; vector<ll> arr(n); for (ll i = 0; i < n; ++i) { cin >> arr[i]; } vector<vector<ll>> pth(n); pth[0].pb(0); for (ll i = 0; i < n - 1; ++i) { ll a, b; cin>> a >> b; a--,b--; pth[b] = pth[a]; ll ans = 0,cnt=0 ,m = pth[b].size(); ord_set<pair<ll,ll>> s; for (ll j = 0; j < m; ++j) { ll tmp = s.order_of_key({arr[pth[b][j]] + 1,0}); ans += max(0ll, j-tmp); s.insert({arr[pth[b][j]], cnt++}); } for (ll j = 0; j < m; ++j) { arr[pth[b][j]] = arr[b]; } pth[b].pb(b); cout << ans << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...