Submission #1325698

#TimeUsernameProblemLanguageResultExecution timeMemory
1325698kasamchiTeleporters (IOI08_teleporters)C++20
80 / 100
1100 ms105928 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    int N, M;
    cin >> N >> M;

    vector<int> W(N), E(N);
    for (int i = 0; i < N; i++) {
        cin >> W[i] >> E[i];
    }

    map<int, int> mp;
    for (int i = 0; i < N; i++) {
        mp[W[i]] = E[i];
        mp[E[i]] = W[i];
    }

    vector<int> szs;
    while (!mp.empty()) {
        int pos = 0, cnt = 0;
        set<int> vis;
        while (true) {
            auto it = mp.upper_bound(pos);
            if (it == mp.end() || vis.count(it -> first)) {
                break;
            }
            vis.insert(it -> first);
            pos = it -> second;
            cnt++;
        }
        for (int x : vis) {
            mp.erase(x);
        }
        szs.push_back(cnt);
    }
    sort(szs.begin() + 1, szs.end(), greater<>());

    if (M >= szs.size() - 1) {
        cout << (N + M) * 2 - (M - szs.size() + 1) % 2 << '\n';
    } else {
        int ans = szs[0];
        for (int i = 1; i <= M; i++) {
            ans += szs[i];
        }
        cout << ans + M * 2 << '\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...