제출 #405473

#제출 시각아이디문제언어결과실행 시간메모리
405473AugustinasJucasTeleporters (IOI08_teleporters)C++14
50 / 100
1080 ms34448 KiB
#include <bits/stdc++.h> using namespace std; const int dydis = 2e6 + 10; int nxt[dydis]; int desn[dydis]; int n, k; vector<pair<int, int> > mas; vector<pair<int, int> > vec; bool vis[dydis] = {}; int main(){ cin >> n >> k; for(int i = 0; i < n; i++){ int a, b; cin >> a >> b; vec.push_back({a, i*2}); vec.push_back({b, i*2+1}); } sort(vec.begin(), vec.end()); for(int i = 0; i < (int)vec.size()-1; i++){ //cout << ((char)('a'+(vec[i].second/2))) << " "; desn[vec[i].second] = vec[i+1].second; } //cout << endl; desn[vec.back().second] = 2*n; for(int i = 0; i < 2*n; i++){ nxt[i] = desn[(i ^ 1)]; // cout << "nxt[" << i << "] = " << nxt[i] << endl; } int start = vec[0].second; int cur = start; int curAns = 0; int jauYra = 0; while(cur != 2*n){ vis[cur] = 1; cur = nxt[cur]; curAns++; jauYra++; } vector<int> ciklai; for(int i = 0; i < 2*n; i++){ if(vis[i]) continue; int cur = i; int kek = 0; while(true){ kek++; vis[cur] = 1; cur = nxt[cur]; if(cur == i) break; } ciklai.push_back(kek); //cout << "dedu " << kek << endl; } sort(ciklai.begin(), ciklai.end()); reverse(ciklai.begin(), ciklai.end()); for(int i = 0; i < min((int)ciklai.size(), k); i++){ curAns += ciklai[i] + 2; jauYra += ciklai[i]; } k -= min((int)ciklai.size(), k); if(k != 0){ //cout << "k != 0" << endl; curAns += ((k/2) * 2); curAns += (k & 1); } cout << curAns; return 0; }
#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...