Submission #993966

#TimeUsernameProblemLanguageResultExecution timeMemory
993966MilosMilutinovicMagic Show (APIO24_show)C++17
100 / 100
3 ms1316 KiB
#include "Alice.h"
#include <bits/stdc++.h>

using namespace std;

vector<pair<int, int>> Alice() {
  long long x = setN(5000);
  vector<pair<int, int>> edges;
  edges.emplace_back(1, 2);
  int t = 0;
  for (int i = 3; i <= 5000;) {
    vector<int> one, zero;
    for (int j = 0; j < 60; j++) {
      if (i + j > 5000) {
        continue;
      }
      int b = (i + j) % 60;
      if (x >> b & 1) {
        one.push_back(i + j);
      } else {
        zero.push_back(i + j);
      }
    }
    if (t == 0) {
      for (int i : one) {
        edges.emplace_back(1, i);
      }
      for (int i : zero) {
        edges.emplace_back(2, i);
      }
    } else {
      for (int i : one) {
        edges.emplace_back(2, i);
      } 
      for (int i : zero) {
        edges.emplace_back(1, i);
      }
    }
    i += 60;
    t ^= 1;
  }
  return edges;
}
#include <bits/stdc++.h>
#include "Bob.h"

using namespace std;

long long Bob(vector<pair<int,int>> v) {
  int n = 5000;
  vector<vector<int>> g(n + 1);
  for (auto& p : v) {
    g[p.first].push_back(p.second);
    g[p.second].push_back(p.first);
  }
  long long res = 0;
  int t = 0;
  for (int i = 3; i <= 5000; ) {
    for (int j = 0; j < 60; j++) {
      if (i + j > 5000) {
        break;
      }
      int b = (i + j) % 60;
      for (int c : g[i + j]) {
        if (c == 1 && t == 0) {
          res |= (1LL << b);
        }
        if (c == 2 && t == 1) {
          res |= (1LL << b);
        }
      }
    }
    i += 60;
    t ^= 1;
  }
  return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...