Submission #448631

#TimeUsernameProblemLanguageResultExecution timeMemory
448631prvocisloTeleporters (IOI08_teleporters)C++17
100 / 100
557 ms42824 KiB
#include <iostream>
#include <vector>
#include <algorithm>
typedef long long ll;
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, m;
    cin >> n >> m;
    vector<pair<int, int> > v(2 * n + 2);
    v[0] = { 0, 0 }, v[1] = { 2e6 + 5, 1 };
    for (int i = 1; i <= n; i++)
    {
        cin >> v[2 * i].first >> v[2 * i + 1].first;
        v[2 * i].second = 2 * i, v[2 * i + 1].second = 2 * i + 1;
    }
    sort(v.begin(), v.end());
    int last = v.back().second;
    int k = v.size();
    vector<int> nx(k, -1);
    for (int i = k - 1; i >= 0; i--)
    {
        nx[v[i].second] = (last < 2 ? last : last ^ 1);
        last = v[i].second;
    }
    vector<bool> vis(k, false);
    int path = -1; vector<int> c;
    for (int i = 0; i < k; i++) if (!vis[i])
    {
        int j = i, len = 0;
        while (!vis[j])
        {
            vis[j] = true;
            len++, j = nx[j];
        }
        if (!i) path = len-2;
        else c.push_back(len);
    }
    sort(c.begin(), c.end());
    while (m && c.size())
    {
        path += c.back() + 2;
        c.pop_back(); m--;
    }
    path += ((m >> 1) << 2) + (m & 1);
    cout << path << "\n";
    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...