Submission #1146647

#TimeUsernameProblemLanguageResultExecution timeMemory
1146647blackslexTeleporters (IOI08_teleporters)C++20
35 / 100
599 ms38740 KiB
#include<bits/stdc++.h>

using namespace std;
using pii = pair<int, int>;

int n, m, x, y;

int main() {
    scanf("%d %d", &n, &m);
    vector<pii> c(n);
    vector<int> pos;
    vector<int> rnxt(n * 2, -1), nxt(n * 2, -1);
    vector<bool> f(n * 2);
    for (auto &[x, y]: c) {
        scanf("%d %d", &x, &y);
        pos.emplace_back(x);
        pos.emplace_back(y);
    }
    sort(pos.begin(), pos.end());
    for (int i = 0; i < pos.size() - 1; i++) rnxt[i] = i + 1;
    for (auto &[x, y]: c) {
        int xx = lower_bound(pos.begin(), pos.end(), x) - pos.begin();
        int yy = lower_bound(pos.begin(), pos.end(), y) - pos.begin();
        nxt[xx] = rnxt[yy];
        nxt[yy] = rnxt[xx];
    }
    auto get = [&] (int st) {
        int res = 0;
        while (~st && !f[st]) {
            res++; f[st] = 1;
            st = nxt[st];
        }
        return res;
    };
    int ans = get(0);
    vector<int> z;
    for (int i = 1; i < n * 2; i++) {
        if (!f[i]) z.emplace_back(get(i));
    }
    sort(z.begin(), z.end());
    while (!z.empty() && m--) {
        ans += z.back() + 2; z.pop_back();
    }
    m++;
    ans += (m / 2) * 4 + (m & 1);
    printf("%d", ans);
}

Compilation message (stderr)

teleporters.cpp: In function 'int main()':
teleporters.cpp:9:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |     scanf("%d %d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~~
teleporters.cpp:15:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |         scanf("%d %d", &x, &y);
      |         ~~~~~^~~~~~~~~~~~~~~~~
#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...