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...