제출 #1222447

#제출 시각아이디문제언어결과실행 시간메모리
1222447ereringTeleporters (IOI08_teleporters)C++20
100 / 100
597 ms39800 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' 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); memset(adj,-1,sizeof adj); 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({2e9,2e9}); sort(vec.begin(),vec.end()); int right=0; 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; } adj[i]=l; } int ans=0; vector<int> nigbig; for(int i=0;i<vec.size()-1;i++){ if(vis[i])continue; flag=0; sz=0; int x=i; while(1){ sz++; vis[x]=1; // cout<<vec[x].first<<' '; if(adj[x]==-1)break; if(vis[adj[x]]){ flag=1; break; } x=adj[x]; } // cout<<endl<<flag<<'f'<<sz<<endl; if(flag)nigbig.pb(sz); else ans=sz-1; } // cout<<ans<<'s'<<endl; 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...