Submission #1222432

#TimeUsernameProblemLanguageResultExecution timeMemory
1222432m5588ohammedTeleporters (IOI08_teleporters)C++20
80 / 100
1098 ms117708 KiB
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define mod 1000000007 int n,m,ans; int p[2000005],v[2000005]; bool vis[2000005]; map <int,int> idx; vector <int> telp; vector <int> qu; void solve(int i,int cnt){ vis[i]=1; if(v[i]==-1) {ans+=cnt-1;return;} if(vis[v[i]]==1) qu.push_back(cnt); else solve(v[i],cnt+1); return; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); memset(v,-1,sizeof v); cin>>n>>m; for(int i=0;i<n;i++){ int a,b; cin>>a>>b; telp.push_back(a); telp.push_back(b); p[a]=b; p[b]=a; } sort(telp.begin(),telp.end()); for(int j=0;j<telp.size();j++) idx[telp[j]]=j+1; v[0]=idx[p[telp[0]]]; for(int j=1;j<telp.size();j++){ v[j]=idx[p[telp[j]]]; } for(int i=0;i<=n*2+1;i++){ if(vis[i]==0){ solve(i,1); } } sort(qu.begin(),qu.end()); for(int i=qu.size()-1;i>=max(0,(int)qu.size()-m);i--){ ans+=qu[i]+2; } if(qu.size()<m){ m-=qu.size(); ans+=(m/2)*4; if(m%2==1) ans++; } cout<<ans<<endl; return 0; } //g++ -std=c++17 template.cpp -o executable.exe
#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...