Submission #239199

#TimeUsernameProblemLanguageResultExecution timeMemory
239199osaaateiasavtnlTeleporters (IOI08_teleporters)C++14
15 / 100
955 ms38536 KiB
#include<bits/stdc++.h> using namespace std; #define ii pair <int, int> #define app push_back #define all(a) a.begin(), a.end() #define bp __builtin_popcountll #define ll long long #define mp make_pair #define f first #define s second #define Time (double)clock()/CLOCKS_PER_SEC const int C = 2e6+7; int who[C]; signed main() { #ifdef HOME freopen("input.txt", "r", stdin); #else #define endl '\n' ios_base::sync_with_stdio(0); cin.tie(0); #endif int n, m; cin >> n >> m; vector <ii> a(n); vector <int> c = {0, 2 * 1000 * 1000 + 1}; for (int i = 0; i < n; ++i) { cin >> a[i].f >> a[i].s; c.app(a[i].f); c.app(a[i].s); who[a[i].f] = i; who[a[i].s] = i; } sort(all(c)); int sz = c.size() - 1; vector <int> to(sz, -1); for (int i = 0; i + 2 < c.size(); ++i) { int u = who[c[i+1]]; int x = a[u].f^a[u].s^c[i+1]; to[i] = lower_bound(all(c), x) - c.begin(); } int ans = 0; vector <int> len; vector <bool> used(sz); for (int i = 0; i < sz; ++i) { if (!used[i]) { int u = i; int l = 0; while (u != -1 && !used[u]) { used[u] = 1; ++l; u = to[u]; } if (u == -1) { ans += l; } else { len.app(l); } } } sort(all(len)); reverse(all(len)); while (len.size() && len.back() == 1) len.pop_back(); for (int i = 0; i < min(m, (int)len.size()); ++i) { ans += len[i]; } ans += 2 * m - 1; cout << ans << endl; }

Compilation message (stderr)

teleporters.cpp: In function 'int main()':
teleporters.cpp:41:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i + 2 < c.size(); ++i) {
                     ~~~~~~^~~~~~~~~~
#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...