Submission #1245498

#TimeUsernameProblemLanguageResultExecution timeMemory
1245498CyberCowNile (IOI24_nile)C++20
0 / 100
26 ms6336 KiB
#include "nile.h" #include <bits/stdc++.h> using namespace std; using ll = long long; ll dp[100005]; int p[100005]; int sz[100005]; void make_set(int i) { p[i] =i; sz[i] = 1; } int get_papa(int i) { if(p[i] == i) return i; return p[i] = get_papa(p[i]); } int ans = 0; void union_set(int a, int b) { a = get_papa(a); b = get_papa(b); if(a == b)return; if(sz[a] > sz[b])swap(a, b); if(sz[a] % 2 && sz[b] % 2) ans++; p[a] = b; sz[b]+= a; } vector<long long> calculate_costs(vector<int> W, vector<int> A, vector<int> B, vector<int> E) { int Q = (int)E.size(); vector<long long> R; vector<pair<int, pair<int, int>>> qaq; for (int i = 0; i < A.size(); i++) { qaq.push_back({W[i], {A[i], B[i]}}); } sort(qaq.begin(), qaq.end()); for (int i = 0; i < A.size(); i++) { W[i] = qaq[i].first; A[i] = qaq[i].second.first; B[i] = qaq[i].second.second; make_set(i); } vector<pair<int ,int>> zuyg; for (int i = 0; i < W.size() - 1; i++) { zuyg.push_back({W[i + 1] - W[i], i}); } sort(zuyg.begin(), zuyg.end()); vector<pair<int, int>> sq; for (int i = 0; i < E.size(); i++) { sq.push_back({E[i], i}); } sort(sq.begin(), sq.end()); int ind = 0; vector<pair<int, int>> hogna; for(auto g: sq) { while (ind < zuyg.size() && zuyg[ind].first <= g.first) { union_set(zuyg[ind].second, zuyg[ind].second + 1); ind++; } hogna.push_back({g.second, 2 * (A.size() - ans)}); } sort(hogna.begin(), hogna.end()); for (int i = 0; i < hogna.size(); i++) { R.push_back(hogna[i].second); } return R; }
#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...