Submission #442870

#TimeUsernameProblemLanguageResultExecution timeMemory
442870jesus_coconutTeleporters (IOI08_teleporters)C++17
50 / 100
1018 ms62924 KiB
#include <bits/stdc++.h> #define all(a) begin(a), end(a) #define S second #define F first using namespace std; void cc(vector<pair<int, int>> &v) { vector<int> tmp; for (auto &[a, b] : v) { tmp.push_back(a); tmp.push_back(b); } sort(all(tmp)); tmp.erase(unique(all(tmp)), end(tmp)); for (auto &[a, b] : v) { a = lower_bound(all(tmp), a) - begin(tmp); b = lower_bound(all(tmp), b) - begin(tmp); } } int const N = 1000005; bool bio[N]; vector<int> len; vector<int> nxt; void findcyc(int ver, int l, int tar) { bio[ver] = true; if (ver == tar) { len.push_back(l); return; } findcyc(nxt[ver], l + 1, tar); } void solve() { int n, m; cin >> n >> m; nxt.resize(2 * n); vector<pair<int, int>> v; for (int i = 0; i < n; ++i) { int a, b; cin >> a >> b; v.emplace_back(a, b); v.emplace_back(b, a); } sort(all(v)); cc(v); for (int i = 0; i < 2 * n; ++i) { nxt[i] = (v[i].S + 1) % (2 * n); } for (int i = 0; i < 2 * n; ++i) { if (!bio[nxt[i]]) { findcyc(nxt[i], 1, i); } } sort(begin(len) + 1, end(len), greater<>()); int ans = len[0]; int i = 1; for (; i <= m; ++i) { if (len[i] > 0) { ans += len[i] + 2; } else break; } int lft = m + 1 - i; if (lft % 2 == 1) { ans++; lft--; } ans += 2 * lft; cout << ans << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); solve(); 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...