Submission #999070

#TimeUsernameProblemLanguageResultExecution timeMemory
999070huutuanTeleporters (IOI08_teleporters)C++14
75 / 100
547 ms55984 KiB
#include<bits/stdc++.h> using namespace std; const int N=2e6+10; int n, m, vis[N], nxt[N]; pair<int, int> a[N]; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m; vector<int> vv{0}; for (int i=1; i<=n; ++i){ cin >> a[i].first >> a[i].second; vv.push_back(a[i].first); vv.push_back(a[i].second); } sort(vv.begin(), vv.end()); for (int i=1; i<=n; ++i){ a[i].first=lower_bound(vv.begin(), vv.end(), a[i].first)-vv.begin(); a[i].second=lower_bound(vv.begin(), vv.end(), a[i].second)-vv.begin(); nxt[a[i].first-1]=a[i].second; nxt[a[i].second-1]=a[i].first; } int ans=0; vector<int> v; for (int i=0; i<=(int)vv.size(); ++i) if (!vis[i]){ int u=i, cnt=0; while (!vis[u]){ vis[u]=1; ++cnt; u=nxt[u]; } if (!i) ans+=cnt-1; else v.push_back(cnt); } sort(v.rbegin(), v.rend()); for (auto &i:v){ if (m){ --m; ans+=i+2; } } while (m){ --m; ++ans; if (m) --m, ans+=3; } 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...