Submission #501678

# Submission time Handle Problem Language Result Execution time Memory
501678 2022-01-04T10:03:03 Z 600Mihnea Teleporters (IOI08_teleporters) C++17
75 / 100
445 ms 50588 KB
#include <bits/stdc++.h>

using namespace std;


signed main() {
  ios::sync_with_stdio(0); cin.tie(0);

 /// freopen ("input", "r", stdin);

  int N, E;
  cin >> N >> E;
  vector<pair<int, int>> guys;
  for (int i = 0; i < N; i++) {
    int A, B;
    cin >> A >> B;
    guys.push_back({A, i});
    guys.push_back({B, i});
  }
  sort(guys.begin(), guys.end());
  vector<int> SM(N);
  for (int i = 0; i < 2 * N; i++) {
    SM[guys[i].second] += i;
  }
  vector<int> nxt(2 * N + 1);
  for (int i = 0; i < 2 * N; i++) {
    int Type = guys[i].second;
    int Other = SM[Type] - i;
    assert(0 <= Other && Other < 2 * N);
    nxt[i] = Other + 1;

  }

  bool WannaCheck = true;
  WannaCheck = false;
  if (WannaCheck) {
    map<int, int> B;
    for (int i = 0; i < 2 * N; i++) {
      B[nxt[i]]++;
    }
    for (int i = 1; i < 2 * N + 1; i++) {
      assert(B.count(i) && B[i] == 1);
    }
  }
  vector<bool> vis(2 * N + 1, false);

  int ZDApath = 0;
  for (int i = 0; i != 2 * N; i = nxt[i]) {
    ZDApath++;
    assert(!vis[i]);
    vis[i] = true;
  }

  vis[2 * N] = true;
  vector<int> SAD;
  for (int i = 0; i <= 2 * N; i++) {
    if (!vis[i]) {

      int LEN = 1;
      vis[i] = true;
      for (int j = nxt[i]; j != i; j = nxt[j]) {
        LEN++;
        assert(!vis[j]);
        vis[j] = true;
      }
      SAD.push_back(LEN);
    }
  }
  sort(SAD.begin(), SAD.end());
  int S = ZDApath;
  ///cout << N << " " << E << "\n";
  while (!SAD.empty() && E) {
    E--;
    S += 2 + SAD.back();
    SAD.pop_back();

  }
  for (int j = 1; j <= E; j++) {
    if (j & 1) {
      S += 3;
    } else {
      S += 1;
    }
  }
  cout << S << "\n";
}


# Verdict Execution time Memory Grader output
1 Correct 0 ms 292 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 316 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 316 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 4 ms 716 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 428 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 716 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 1024 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 47 ms 4268 KB Output is correct
2 Correct 127 ms 9540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 99 ms 7048 KB Output is correct
2 Incorrect 223 ms 13664 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 305 ms 30320 KB Output is correct
2 Correct 342 ms 35924 KB Output is correct
3 Correct 369 ms 42000 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 411 ms 40732 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 445 ms 49096 KB Output is correct
2 Correct 441 ms 49292 KB Output is correct
3 Correct 353 ms 50588 KB Output is correct
4 Correct 404 ms 50428 KB Output is correct