Submission #1020825

#TimeUsernameProblemLanguageResultExecution timeMemory
1020825boyliguanhanTeleporters (IOI08_teleporters)C++17
100 / 100
583 ms28316 KiB
#include<bits/stdc++.h> using namespace std; int go[2000100],tele[2000100],st[2000100],sz; bitset<2000100>vis; 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[sz++]=x; st[sz++]=y; } sz++; st[sz++]=2e6+1; tele[(int)2e6+1]=2e6+1; sort(st,st+sz); for(int i=0;i<sz;i++){ if(st[i]>2e6)break; go[st[i]]=tele[st[i+1]]; } int x=0,y=0; while(x<=2e6) y++,vis[x]=1,x=go[x]; priority_queue<int>pq; for(int i=0;i<sz;i++) if(!vis[st[i]]) pq.push(docycle(st[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:38:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::priority_queue<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |     if(m>=pq.size())
      |        ~^~~~~~~~~~~
teleporters.cpp:39:25: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
   39 |         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...