Submission #54059

# Submission time Handle Problem Language Result Execution time Memory
54059 2018-07-02T09:32:03 Z 강태규(#1453) Teleporters (IOI08_teleporters) C++11
95 / 100
1000 ms 26644 KB
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <unordered_map>
#include <functional>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cstdlib>

using namespace std;
typedef long long llong;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<llong, llong> pll;

int n, m;
int s[1000000];
int e[1000000];
int comp[2000000];
int to[2000000];
bool visited[2000001];
int arr[2000000];

int find(int x) {
    return lower_bound(comp, comp + (n << 1 | 1), x) - comp;
}

int main() {
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; ++i) {
        scanf("%d%d", s + i, e + i);
        comp[i << 1 | 0] = s[i];
        comp[i << 1 | 1] = e[i];
    }
    comp[n << 1] = 0;
    sort(comp, comp + (n << 1 | 1));
    for (int i = 0; i < n; ++i) {
        s[i] = find(s[i]);
        e[i] = find(e[i]);
        to[s[i]] = e[i];
        to[e[i]] = s[i];
    }
    visited[n << 1] = 1;
    int j = 0;
    for (int i = 0; i < (n << 1); ++i) {
        if (visited[i]) continue;
        int x = to[i + 1];
        visited[i] = 1;
        arr[j] = 1;
        while (!visited[x]) {
            visited[x] = 1;
            x = to[x + 1];
            ++arr[j];
        }
        ++j;
    }
    int sz = arr[0];
    sort(arr + 1, arr + j, greater<int>());
    for (int i = 1; i < j && m > 0; ++i, --m) {
        sz += arr[i] + 2;
    }
    printf("%d\n", sz + ((m >> 1) << 2) + (m & 1));
    
	return 0;
}

Compilation message

teleporters.cpp: In function 'int main()':
teleporters.cpp:34:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
teleporters.cpp:36:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", s + i, e + i);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 592 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 592 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 596 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 596 KB Output is correct
2 Correct 10 ms 848 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 848 KB Output is correct
2 Correct 11 ms 848 KB Output is correct
3 Correct 21 ms 1360 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 1360 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 19 ms 1360 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 100 ms 3968 KB Output is correct
2 Correct 267 ms 8796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 187 ms 8796 KB Output is correct
2 Correct 418 ms 12448 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 607 ms 18392 KB Output is correct
2 Correct 785 ms 21600 KB Output is correct
3 Correct 766 ms 24620 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 931 ms 24620 KB Output is correct
2 Correct 997 ms 26644 KB Output is correct
3 Correct 921 ms 26644 KB Output is correct
4 Correct 933 ms 26644 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1081 ms 26644 KB Time limit exceeded
2 Halted 0 ms 0 KB -