Submission #688595

#TimeUsernameProblemLanguageResultExecution timeMemory
688595finn__Teleporters (IOI08_teleporters)C++17
100 / 100
567 ms35068 KiB
#include <bits/stdc++.h> using namespace std; unsigned get_component_size( vector<pair<unsigned, unsigned>> const &teleports, unsigned i, vector<bool> &visited) { unsigned j = i; unsigned component_size = 0; do { component_size++; visited[j] = 1; j = upper_bound(teleports.begin(), teleports.end(), make_pair(teleports[j].second, UINT_MAX)) - teleports.begin(); } while (j != i && j < teleports.size()); return component_size; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); size_t n, m; cin >> n >> m; vector<pair<unsigned, unsigned>> teleports(2 * n); for (size_t i = 0; i < n; i++) { unsigned a, b; cin >> a >> b; teleports[i] = {a, b}; teleports[n + i] = {b, a}; } sort(teleports.begin(), teleports.end()); vector<bool> visited(2 * n, 0); unsigned ans = get_component_size(teleports, 0, visited); vector<unsigned> component_sizes; for (size_t i = 0; i < 2 * n; i++) { if (!visited[i]) { component_sizes.push_back(get_component_size(teleports, i, visited)); } } sort(component_sizes.begin(), component_sizes.end()); while (m--) { if (!component_sizes.empty()) { ans += component_sizes.back() + 2; component_sizes.pop_back(); } else { ans++; component_sizes.push_back(1); } } cout << ans << '\n'; }
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...