Submission #163592

#TimeUsernameProblemLanguageResultExecution timeMemory
163592nvmdavaTeleporters (IOI08_teleporters)C++17
100 / 100
437 ms29004 KiB
#include <bits/stdc++.h>
using namespace std;
#define N 2000001
int to[2000005];
bool in[2000005];
int cnt;
int res;
 
void go(int i){
    if(in[i] || i > N) return;
    in[i] = 1;
    i++;
    if(to[i]){
        i = to[i];
        cnt++;
    }
    go(i);
}
vector<int> v;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, m;
    cin>>n>>m;
    for(int i = 1; i <= n; i++){
        int w, e;
        cin>>w>>e;
        to[w] = e;      
        to[e] = w;
    }
    for(int i = 0; i <= N; i++){
        if(!in[i]){
            cnt = 0;
            go(i);
            if(i == 0) res = cnt;
            else v.push_back(cnt);
        }
    }
    sort(v.rbegin(), v.rend());
    if(m < v.size())
        v.resize(m);
    m -= v.size();
    if(m >= 0)res += (m >> 1 << 2) + (m % 2); 
    for(int i : v)
        res += i + 2;
    cout<<res;
}

Compilation message (stderr)

teleporters.cpp: In function 'int main()':
teleporters.cpp:41:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(m < v.size())
        ~~^~~~~~~~~~
#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...