답안 #569421

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
569421 2022-05-27T11:38:23 Z 79brue Teleporters (IOI08_teleporters) C++17
75 / 100
865 ms 40448 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int n, k, len;
int nxt[2000002];
bool visited[2000002];
int l[1000002], r[1000002];
vector<int> vec;
int base;

int main(){
    scanf("%d %d", &n, &k);
    for(int i=1; i<=n; i++){
        scanf("%d %d", &l[i], &r[i]);
        vec.push_back(l[i]), vec.push_back(r[i]);
    }
    sort(vec.begin(), vec.end());
    len = n*2;
    for(int i=0; i<len; i++) nxt[i] = i+1;
    for(int i=1; i<=n; i++){
        l[i] = lower_bound(vec.begin(), vec.end(), l[i]) - vec.begin() + 1;
        r[i] = lower_bound(vec.begin(), vec.end(), r[i]) - vec.begin() + 1;
        nxt[l[i]-1] = r[i];
        nxt[r[i]-1] = l[i];
    }
    nxt[len] = 0;
    vec.clear();
    for(int i=0; i<=len; i++){
        if(visited[i]) continue;
        int x = i, cnt = 0;
        while(!visited[x]){
            visited[x] = 1;
            cnt++;
            x = nxt[x];
        }
        if(i==0) base = cnt;
        else vec.push_back(cnt);
    }
    sort(vec.begin(), vec.end());
    --base;
    if((n+k)%2==1) base--;
    while(k--){
        if(vec.empty()) base += 2;
        else base += vec.back() + 2, vec.pop_back();
    }
    printf("%d", base);
}

Compilation message

teleporters.cpp: In function 'int main()':
teleporters.cpp:15:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |     scanf("%d %d", &n, &k);
      |     ~~~~~^~~~~~~~~~~~~~~~~
teleporters.cpp:17:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |         scanf("%d %d", &l[i], &r[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 340 KB Output is correct
2 Correct 9 ms 836 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 512 KB Output is correct
2 Correct 8 ms 724 KB Output is correct
3 Correct 17 ms 1488 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 724 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 9 ms 860 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 105 ms 3528 KB Output is correct
2 Incorrect 254 ms 12388 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 149 ms 5796 KB Output is correct
2 Correct 368 ms 11720 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 498 ms 16196 KB Output is correct
2 Correct 605 ms 30460 KB Output is correct
3 Correct 678 ms 32972 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 771 ms 22764 KB Output is correct
2 Correct 811 ms 24568 KB Output is correct
3 Correct 865 ms 40032 KB Output is correct
4 Correct 850 ms 40416 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 861 ms 25840 KB Output is correct
2 Correct 861 ms 25836 KB Output is correct
3 Correct 446 ms 40448 KB Output is correct
4 Incorrect 834 ms 40436 KB Output isn't correct
5 Halted 0 ms 0 KB -