Submission #1236403

#TimeUsernameProblemLanguageResultExecution timeMemory
1236403MarwenElarbiParking (CEOI22_parking)C++20
0 / 100
128 ms14156 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second const int nax = 2e5+5; vector<int> adj[nax]; int main() { int n,m; cin>>n>>m; int tab[m+1][2]; set<int> free; int one[n+1]; memset(one , -1 , sizeof one); for (int i = 1; i <= m; ++i) { cin>>tab[i][0]>>tab[i][1]; if(tab[i][0]==0) free.insert(i); else if(tab[i][1]==0) one[tab[i][0]]=i; } vector<pair<int,int>> ans; for (int i = 1; i <= m; ++i) { if(tab[i][1]==tab[i][0]) continue; if(tab[i][1]!=0){ if(one[tab[i][1]]!=-1){ ans.push_back({i,one[tab[i][1]]}); tab[one[tab[i][1]]][1]=tab[i][1]; tab[i][1]=0; }else{ ans.push_back({i,*--free.end()}); one[tab[i][1]]=*--free.end(); free.erase(*--free.end()); tab[one[tab[i][1]]][0]=tab[i][1]; tab[i][1]=0; } if(one[tab[i][0]]==-1) one[tab[i][0]]=i; } if(tab[i][0]!=0){ if(one[tab[i][0]]==i) continue; ans.push_back({i,one[tab[i][0]]}); tab[one[tab[i][0]]][1]=tab[i][0]; tab[i][0]=0; free.insert(i); } } cout <<ans.size()<<endl; for(auto u : ans) cout << u.fi <<" "<<u.se<<endl; }
#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...