Submission #894265

#TimeUsernameProblemLanguageResultExecution timeMemory
894265abcvuitunggioTeleporters (IOI08_teleporters)C++17
10 / 100
303 ms47808 KiB
#include <bits/stdc++.h>
using namespace std;
int n,m,w[1000001],e[1000001],cnt[1000001],p[2000001],nxt[2000001],res;
int main(){
    ios_base::sync_with_stdio(NULL);cin.tie(nullptr);
    cin >> n >> m;
    for (int i=1;i<=n;i++){
        cin >> w[i] >> e[i];
        p[w[i]]=p[e[i]]=i;
        nxt[w[i]]=e[i];
        nxt[e[i]]=w[i];
    }
    int u=1;
    while (u<=2000000){
        if (p[u]){
            cnt[p[u]]++;
            res++;
            u=nxt[u];
        }
        u++;
    }
    priority_queue <int> q;
    stack <int> st;
    for (int i=1;i<=2000000;i++)
        if (p[i]){
            if (nxt[i]<i){
                int c=0;
                while (!st.empty()&&st.top()>nxt[i]){
                    c++;
                    st.pop();
                }
                if (cnt[p[i]]<2)
                    q.push(c);
            }
            if (!cnt[p[i]]&&nxt[i]>i)
                st.push(i);
        }
    while (!q.empty()&&m){
        res+=q.top()+3;
        q.pop();
        m--;
    }
    cout << res+m+m/2*2;
}
#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...