Submission #1222422

#TimeUsernameProblemLanguageResultExecution timeMemory
1222422ereringTeleporters (IOI08_teleporters)C++20
75 / 100
526 ms131072 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N=2e6+5,MOD=998244353; #define pb push_back #define endl '\n' vector<int> adj[N]; int sz=0; bool vis[N],flag=0; void dfs(int node){ if(vis[node]){ flag=1; return; } sz++; vis[node]=1; for(auto i:adj[node])dfs(i); } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m; cin>>n>>m; pair<int,int> p[n]; vector<pair<int,int>> vec; for(int i=0;i<n;i++){ cin>>p[i].first>>p[i].second; vec.pb({p[i].first,p[i].second}); vec.pb({p[i].second,p[i].first}); } vec.pb({2e18,2e18}); sort(vec.begin(),vec.end()); for(int i=0;i<vec.size()-1;i++){ int y=vec[i].second; int l=0,r=vec.size()-1; while(l<r){ int mid=(l+r)/2; if(vec[mid].first>y)r=mid; else l=mid+1; } // cout<<vec[l].first<<' '<<vec[i].first<<endl; adj[i].pb(l); } int ans=0; vector<int> nigbig; for(int i=0;i<vec.size()-1;i++){ if(vis[i])continue; flag=0; sz=0; dfs(i); //cout<<i<<' '<<flag<<' '<<sz<<endl; if(flag)nigbig.pb(sz); else ans=sz-1; } // cout<<ans<<' '<<sz<<endl; sort(nigbig.begin(),nigbig.end()); for(int i=nigbig.size()-1;i>=0 && m>0;i--){ ans+=nigbig[i]+2; m--; } // cout<<ans<<endl; ans+=m/2*4; if(m%2)ans++; cout<<ans; }
#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...