Submission #1020783

#TimeUsernameProblemLanguageResultExecution timeMemory
1020783vjudge1Teleporters (IOI08_teleporters)C++17
75 / 100
658 ms65536 KiB
#include<bits/stdc++.h> using namespace std; map<int,int> go,tele; bitset<2000100>vis; set<int>st; int docycle(int n){ int x=0; while(!vis[n]) x++,vis[n]=1,n=go[n]; return x; } int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ int x,y; cin>>x>>y; tele[x]=y; tele[y]=x; st.insert(x); st.insert(y); } st.insert(0); st.insert(2e6+1); tele[2e6+1]=2e6+1; for(auto i:st){ if(i>2e6)break; go[i]=tele[*st.upper_bound(i)]; } int x=0,y=0; while(x<=2e6) y++,vis[x]=1,x=go[x]; priority_queue<int>pq; for(auto i:st) if(!vis[i]) pq.push(docycle(i)); if(m>=pq.size()) cout<<(n+m)*2-(n+m&1); else { while(m--) y+=2+pq.top(),pq.pop(); cout<<y-1; } }

Compilation message (stderr)

teleporters.cpp: In function 'int main()':
teleporters.cpp:36:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::priority_queue<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     if(m>=pq.size())
      |        ~^~~~~~~~~~~
teleporters.cpp:37:25: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
   37 |         cout<<(n+m)*2-(n+m&1);
      |                        ~^~
#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...