Submission #1222436

#TimeUsernameProblemLanguageResultExecution timeMemory
1222436ereringTeleporters (IOI08_teleporters)C++20
55 / 100
702 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; vector<bool> vis(N); bool flag=0; 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(n*2+1); for(int i=0;i<n;i++){ cin>>p[i].first>>p[i].second; vec[i*2]={p[i].first,p[i].second}; vec[i*2+1]={p[i].second,p[i].first}; } vec[n*2]={2e18,2e18}; sort(vec.begin(),vec.end()); for(int i=0;i<vec.size()-1;i++){ int y=vec[i].second; // cout<<vec[i].first<<' '<<vec[i].second<<endl; // while(vec[right].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; } adj[i].pb(l); } int ans=0,cnt=0; vector<int> nigbig(vec.size()-1); for(int i=0;i<vec.size()-1;i++){ if(vis[i])continue; flag=0; sz=0; queue<int> q; q.push(i); while(!q.empty()){ int x=q.front(); q.pop(); if(vis[x]){ flag=1; continue; } sz++; vis[x]=1; for(auto j:adj[x])q.push(j); } if(flag)nigbig[cnt++]=sz; else ans=sz-1; } sort(nigbig.begin(),nigbig.end()); for(int i=nigbig.size()-1;i>=0 && m>0;i--){ ans+=nigbig[i]+2; m--; } 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...