Submission #163449

#TimeUsernameProblemLanguageResultExecution timeMemory
163449dolphingarlicTeleporters (IOI08_teleporters)C++14
100 / 100
580 ms52344 KiB
#include <bits/stdc++.h> #define FOR(i, x, y) for (int i = x; i < y; i++) typedef long long ll; using namespace std; int has_end[2020202], to[2020202], pref[2020202]; pair<int, int> teleporters[2020202]; int cnt = 0, sizes[2020202]; bool visited[2020202]; void dfs(int node, int cycle) { visited[node] = true; sizes[cycle]++; if (!visited[to[node]]) dfs(to[node], cycle); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; FOR(i, 0, n) { int a, b; cin >> a >> b; has_end[a] = has_end[b] = 1; teleporters[i] = {a, b}; } FOR(i, 1, 2020202) pref[i] = pref[i - 1] + has_end[i]; FOR(i, 0, n) { to[pref[teleporters[i].first] - 1] = pref[teleporters[i].second]; to[pref[teleporters[i].second] - 1] = pref[teleporters[i].first]; } FOR(i, 0, 2 * n) if (!visited[i]) dfs(i, cnt++); sort(sizes + 1, sizes + cnt, greater<int>()); for (int i = 1; i < cnt && m; i++, m--) sizes[0] += sizes[i] + 2; sizes[0] += (m / 2) * 4 + (m & 1); cout << sizes[0] - 1; return 0; }
#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...