Submission #1029650

#TimeUsernameProblemLanguageResultExecution timeMemory
1029650thinknoexitTeleporters (IOI08_teleporters)C++17
100 / 100
202 ms36812 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1001000;
bool ch[2 * N];
int w[2 * N], c[2 * N];
int main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    int n, m;
    cin >> n >> m;
    for (int i = 0;i <= 2000000;i++) w[i] = i + 1;
    for (int i = 1, l, r;i <= n;i++) {
        cin >> l >> r;
        w[l] = r + 1, c[l] = 1;
        w[r] = l + 1, c[r] = 1;
    }
    int ans = 0;
    vector<int> v;
    w[2000000] = 0;
    for (int i = 0;i <= 2000000;i++) {
        if (!ch[i]) {
            int now = i;
            int res = 0;
            while (!ch[now]) {
                ch[now] = 1;
                res += c[now];
                now = w[now];
            }
            if (i != 0) v.push_back(res);
            else ans += res;
        }
    }
    sort(v.rbegin(), v.rend());
    for (int i = 0;i < min(m, (int)v.size());i++) ans += v[i] + 2;
    m -= min(m, (int)v.size());
    if (m & 1) ans += 2 * m - 1;
    else ans += 2 * m;
    cout << ans << '\n';
    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...