Submission #64985214


Source Code Expand

#pragma GCC optimize("O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx")

#include <atcoder/dsu>
#include <atcoder/segtree>
// #include <atcoder/mincostflow>

#define FINAL_SUBMIT 0

#include <algorithm>
#include <array>
#include <bit>
#include <bitset>
#include <cassert>
#include <climits>
#include <complex>
#include <cstdio>
#include <cstring>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <map>
#include <memory>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <string>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <vector>

#define REP(i, n) for (int i = 0; i < (int)(n); i++)
#define ALL(x) (x).begin(), (x).end()

#if FINAL_SUBMIT
#define HHH(x)
#define LOG(x)
#define GRAPH(x, y)
#define CERR() if (false) std::cerr
#define NDEBUG
#else
#define HHH(x) std::cerr << "L" << __LINE__ << ": " << #x << " : " << (x) << "\n"
#define LOG(x) std::cerr << #x << " = " << x << "\n"
#define GRAPH(x, y) std::cerr << "graph " << x << " " << y << "\n"
#define CERR() std::cerr
#endif

template <typename T> T &chmin(T &a, const T &b) { return a = std::min(a, b); }
template <typename T> T &chmax(T &a, const T &b) { return a = std::max(a, b); }

using ll = long long;
using ld = double;
using P = std::pair<int, int>;
constexpr int INF = 1e9;
constexpr double PI = acos(-1.0);

// Template for printing pair and vector
std::ostream& operator<<(std::ostream& os, const P& p) {
  return os << "(" << p.first << ", " << p.second << ")";
}
template <typename T> std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec) {
  os << "[";
  for (const T& e : vec) os << " " << e;
  os << " ]";
  return os;
}

class Timer {
public:
  // static constexpr double time_limit = 1.98;
  static constexpr int64_t CYCLES_PER_SEC = 2900000000;
  // static constexpr double CYCLES = CYCLES_PER_SEC * time_limit;
  int64_t start, stop;
#if 0
  // Deterministic mode
  inline int64_t get_cycle() const {
    static int64_t cycle = 0;
    return cycle += 30000;
  }
#else
  inline int64_t get_cycle() const {
    uint32_t low, high;
    __asm__ volatile("rdtsc" : "=a"(low), "=d"(high));
    return int64_t(low) | (int64_t(high) << 32);
  }
#endif
  Timer(double time_limit) : start(get_cycle()), stop(start + CYCLES_PER_SEC * time_limit) {}
  inline void reset_stop(double time_limit) { stop = start + CYCLES_PER_SEC *  time_limit; }
  inline bool within(int64_t end) const { return get_cycle() < end; }
  inline bool within() const { return within(stop); }
  inline double elapsed() const { return (get_cycle() - start) / double(CYCLES_PER_SEC); }
};

class XorShift {
  unsigned int x, y, z, w;
public:
  XorShift() : x(314159265), y(358979323), z(846264338), w(327950288) {}
  inline unsigned int next() {
    unsigned int t = x ^ x << 11;
    x = y; y = z; z = w;
    return w = w ^ w >> 19 ^ t ^ t >> 8;
  }
  inline int next(int n) { return next() % n; }
  inline int next(size_t n) { return next() % n; }
  inline int next(int lo, int hi) { return lo + next(hi - lo + 1); }
  inline double next(double x) { return double(next()) / (1LL << 32) * x; }
};

double get_param(const char* env_var) {
  char* ret = getenv(env_var);
  assert (ret != nullptr);
  return stod(std::string(ret));
}

// double a_param = get_param("A_PARAM");
// double b_param = get_param("B_PARAM");
// double c_param = get_param("C_PARAM");
// int a_param = get_param("A_PARAM");
// int j_param = get_param("J_PARAM");

Timer timer(1.95);
XorShift rnd;

class SimulatedAnnealing {
public:
  constexpr static int LOG_SIZE = 0x10000;
  constexpr static int UPDATE_INTERVAL = 0xFF;
  constexpr static double START_TEMP = 10000;
  constexpr static double END_TEMP = 300;
  constexpr static int64_t CYCLES = Timer::CYCLES_PER_SEC * 0.47;
  // constexpr static double TEMP_RATIO = (END_TEMP - START_TEMP) / CYCLES;  // linear
  constexpr static double TEMP_RATIO = log(END_TEMP / START_TEMP) / CYCLES;  // exponential
  double logp[LOG_SIZE];
  long long iteration = 0;
  int64_t cycle = 0;
  int64_t start = timer.get_cycle();
  // int64_t stop = timer.stop;
  int64_t stop = start + CYCLES;
  bool record = false;
  double temp = START_TEMP;

  SimulatedAnnealing() {
    constexpr double inv = 1.0 / LOG_SIZE;
    REP(i,LOG_SIZE) logp[i] = log((i + 0.5) * inv);
    std::mt19937 rng;
    std::shuffle(logp, logp + LOG_SIZE, rng);
  }

  inline bool End() {
    iteration++;
    // if ((iteration & UPDATE_INTERVAL) != 0) return false;
    cycle = timer.get_cycle();
    // temp = END_TEMP - (stop - cycle) * TEMP_RATIO;  // linear
    temp = START_TEMP * exp((cycle - start) * TEMP_RATIO);  // exponential
    return cycle >= stop;
  }

  inline bool Accept(double diff) {
    static unsigned short index = 0;
    return diff >= 0 || diff > logp[index++] * temp;
  }
};

using namespace std;

double sq(double x) { return x * x; }

using Point = pair<ll, ll>;
int nA, nB, nC;
Point A[128], B[128], C[128];

int Orient(Point a, Point b, Point p) {
  // return (b[0] - a[0]) * (p[1] - a[1]) - (b[1] - a[1]) * (p[0] - a[0]);
  return (b.first - a.first) * (p.second - a.second) - (b.second - a.second) * (p.first - a.first);
}

bool Contains(Point p, Point a, Point b, Point c) {
  // # degenerate (colinear) case
  // if orient(a, b, c) == 0:
  //     if orient(a, b, p) != 0 or orient(a, c, p) != 0:
  //         return False
  //     xs = (a[0], b[0], c[0])
  //     ys = (a[1], b[1], c[1])
  //     return min(xs) <= p[0] <= max(xs) and min(ys) <= p[1] <= max(ys)

  // # non‐degenerate: check same side of all edges
  // c1 = orient(a, b, p)
  // c2 = orient(b, c, p)
  // c3 = orient(c, a, p)
  // return (c1 >= 0 and c2 >= 0 and c3 >= 0) or (c1 <= 0 and c2 <= 0 and c3 <= 0)
  if (Orient(a, b, c) == 0) {
    if (Orient(a, b, p) != 0 || Orient(a, c, p) != 0) return false;
    auto xs = array<ll, 3>{a.first, b.first, c.first};
    auto ys = array<ll, 3>{a.second, b.second, c.second};
    return min({xs[0], xs[1], xs[2]}) <= p.first && p.first <= max({xs[0], xs[1], xs[2]}) &&
           min({ys[0], ys[1], ys[2]}) <= p.second && p.second <= max({ys[0], ys[1], ys[2]});
  }
  int c1 = Orient(a, b, p);
  int c2 = Orient(b, c, p);
  int c3 = Orient(c, a, p);
  return (c1 >= 0 && c2 >= 0 && c3 >= 0) || (c1 <= 0 && c2 <= 0 && c3 <= 0);
}

void SetUp() {
  scanf("%d%d%d", &nA, &nB, &nC);
  REP(i, nA) scanf("%lld%lld", &A[i].first, &A[i].second);
  REP(i, nB) scanf("%lld%lld", &B[i].first, &B[i].second);
  REP(i, nC) scanf("%lld%lld", &C[i].first, &C[i].second);
}

// vector<pair<Point, Point>> Solve(const vector<Point> &ok, const vector<Point> &ng) {
//   vector<bool> used(ok.size(), false);
//   int l = rnd.next(0, ok.size() - 1);
//   int r = l;
//   cerr << "l = " << l << " r = " << r << endl;
//   vector<pair<Point, Point>> res;
//   res.emplace_back(ok[l], ok[r]);
//   used[l] = true;
//   used[r] = true;
//   for (;;) {
//     int best = -1;
//     double best_dist = 1e30;
//     vector<int> best_count;
//     REP(i,ok.size()) {
//       if (used[i]) continue;
//       double dist = sq(ok[l].first - ok[i].first) + sq(ok[l].second - ok[i].second);
//       if (dist >= best_dist) continue;
//       bool flag = true;
//       for (auto &p : ng) {
//         if (Contains(p, ok[l], ok[i], ok[r])) {
//           flag = false;
//           break;
//         }
//       }
//       cerr << i << " " << dist << " " << flag << endl;
//       if (!flag) continue;
//       vector<int> count;
//       REP(j,ok.size()) {
//         if (used[j]) continue;
//         if (Contains(ok[j], ok[l], ok[i], ok[r])) {
//           count.push_back(j);
//         }
//       }
//       if (count.empty()) continue;
//       dist /= int(count.size());
//       cerr << i <<  " " << count.size() << endl;
//       if (dist < best_dist) {
//         best = i;
//         best_count = count;
//         best_dist = dist;
//       }
//     }
//     cerr << "Left: " << best << " " << best_dist << endl;
//     if (best == -1) break;
//     l = best;
//     for (int i : best_count) {
//       used[i] = true;
//     }

//     best = -1; best_dist = 1e30;
//     REP(i,ok.size()) {
//       if (used[i]) continue;
//       double dist = sq(ok[r].first - ok[i].first) + sq(ok[r].second - ok[i].second);
//       if (dist >= best_dist) continue;
//       bool flag = true;
//       int loop = 0;
//       for (auto &p : ng) {
//         if (Contains(p, ok[l], ok[i], ok[r])) {
//           flag = false;
//           cerr << "NG: " << i << " " << loop << " " << p.first << " " << p.second << endl;
//           break;
//         }
//         ++loop;
//       }
//       cerr << i << " " << dist << " " << flag << endl;
//       if (!flag) continue;
//       vector<int> count;
//       REP(j,ok.size()) {
//         if (used[j]) continue;
//         if (Contains(ok[j], ok[l], ok[i], ok[r])) {
//           count.push_back(j);
//         }
//       }
//       if (count.empty()) continue;
//       dist /= int(count.size());
//       if (dist < best_dist) {
//         best = i;
//         best_count = count;
//         best_dist = dist;
//       }
//     }
//     cerr << "Right: " << best << " " << best_dist << endl;
//     if (best == -1) break;
//     r = best;
//     for (int i : best_count) {
//       used[i] = true;
//     }

//     res.emplace_back(ok[l], ok[r]);
//   }
//   return res;
// }

vector<pair<Point, Point>> SolveA(const vector<Point> &ok, const vector<Point> &ng) {
  int N = ok.size();
  vector<int> perm(N);
  iota(perm.begin(), perm.end(), 0);
  vector<vector<double>> dist(N, vector<double>(N, 0));
  REP(i,N) {
    REP(j,N) {
      dist[i][j] = sqrt(sq(ok[i].first - ok[j].first) + sq(ok[i].second - ok[j].second));
    }
  }
  int iter = 0;
  int accept = 0;
  SimulatedAnnealing sa;
  while (!sa.End()) {
    ++iter;
    int l = rnd.next(0, N - 1);
    int r = rnd.next(0, N - 1);
    if (l > r) swap(l, r);
    if (r - l <= 1) continue;
    double diff = 0;
    if (l > 0) diff -= dist[perm[l - 1]][perm[l]];
    if (r < N - 1) diff -= dist[perm[r - 1]][perm[r]];
    if (l > 0) diff += dist[perm[l - 1]][perm[r - 1]];
    if (r < N - 1) diff += dist[perm[l]][perm[r]];
    if (sa.Accept(-diff)) {
      ++accept;
      reverse(perm.begin() + l, perm.begin() + r);
    }
  }

  vector<pair<Point, Point>> res;
  vector<bool> vl(N, true), vr(N, true);
  auto Compute = [&]() {
    vector<bool> covered(N, false);
    int n_covered = 0;
    int l = 0, r = 0;
    while (l < N && !vl[l]) ++l;
    while (r < N && !vr[l]) ++r;
    double sum = 0;
    for (;;) {
      int nl = l + 1;
      while (nl < N && !vl[nl]) ++nl;
      if (nl == N) {
        if (n_covered != N) return 1e30;
        return sum;
      }
      for (Point p : ng) {
        if (Contains(p, ok[perm[l]], ok[perm[nl]], ok[perm[r]])) {
          return 1e30;
        }
      }
      REP(i,ok.size()) {
        if (covered[i]) continue;
        if (Contains(ok[i], ok[perm[l]], ok[perm[nl]], ok[perm[r]])) {
          covered[i] = true;
          n_covered++;
        }
      }
      double d1 = dist[perm[l]][perm[nl]];
      l = nl;

      int nr = r + 1;
      while (nr < N && !vr[nr]) ++nr;
      assert(nr != N);
      for (Point p : ng) {
        if (Contains(p, ok[perm[l]], ok[perm[nr]], ok[perm[r]])) {
          return 1e30;
        }
      }
      REP(i,ok.size()) {
        if (covered[i]) continue;
        if (Contains(ok[i], ok[perm[l]], ok[perm[nr]], ok[perm[r]])) {
          covered[i] = true;
          n_covered++;
        }
      }
      double d2 = dist[perm[r]][perm[nr]];
      r = nr;
      sum += d1 + d2;
    }
  };
  double best_cost = Compute();
  LOG(best_cost);
  SimulatedAnnealing sa2;
  while (!sa2.End()) {
    ++iter;
    int l = rnd.next(0, N - 1);
    int r = rnd.next(0, N - 1);
    if (vl[l] != vr[r]) continue;
    vl[l] = !vl[l];
    vr[r] = !vr[r];
    double cost = Compute();
    if (sa.Accept(best_cost - cost)) {
      best_cost = cost;
    } else {
      vl[l] = !vl[l];
      vr[r] = !vr[r];
    }
  }
  double final_cost = best_cost;
  LOG(final_cost);

  {
    int countl = 0, countr = 0;
    REP(i,N) {
      if (vl[i]) countl++;
      if (vr[i]) countr++;
    }
    REP(i,N) cerr << vl[i] << " " << vr[i] << endl;
    LOG(countl);
    LOG(countr);
    assert(countl == countr);

    int l = 0, r = 0;
    for (;;) {
      while (l < N && !vl[l]) ++l;
      while (r < N && !vr[r]) ++r;
      assert((l == N) == (r == N));
      if (l == N || r == N) break;
      res.emplace_back(ok[perm[l]], ok[perm[r]]);
      ++l; ++r;
    }
  }
  LOG(iter);
  LOG(accept);
  return res;
}

void Print(const vector<pair<Point, Point>> &res1, const vector<pair<Point, Point>> &res2) {
  int N = max(res1.size(), res2.size());
  LOG(N);
  REP(i,N) {
    int l = min(i, (int)res1.size() - 1);
    int r = min(i, (int)res2.size() - 1);
    cout << res1[l].first.first << " " << res1[l].first.second << " "
         << res1[l].second.first << " " << res1[l].second.second << " "
         << res2[r].first.first << " " << res2[r].first.second << " "
         << res2[r].second.first << " " << res2[r].second.second << "\n";
  }
  fflush(stdout);
}

tuple<int, vector<pair<Point, Point>>, vector<pair<Point, Point>>> SolveBImpl(int rot) {
  vector<pair<int, int>> events1;
  int rot1 = max(rot, 0);
  int rot2 = max(-rot, 0);
  REP(i,nA) {
    int d = rot1 * ((1000000 - A[i].second) + rot2 * A[i].second) / 1000000;
    events1.emplace_back(A[i].first - d, 0);
  }
  REP(i,nB) {
    int d = rot1 * ((1000000 - B[i].second) + rot2 * B[i].second) / 1000000;
    events1.emplace_back(B[i].first - d, 1);
  }
  sort(events1.begin(), events1.end());

  vector<pair<int, int>> events2;
  REP(i,nA) {
    int d = rot1 * ((1000000 - A[i].first) + rot2 * A[i].first) / 1000000;
    events2.emplace_back(A[i].second - d, 0);
  }
  REP(i,nB) {
    int d = rot1 * ((1000000 - B[i].first) + rot2 * B[i].first) / 1000000;
    events2.emplace_back(B[i].second - d, 1);
  }
  sort(events2.begin(), events2.end());

  int dist1 = events1.back().first - events1.front().first;
  int dist2 = events2.back().first - events2.front().first;

  REP(i,nA+nB-1) {
    if (events1[i].first == events1[i + 1].first) dist1 = 1e8;
    if (events1[i].first == 0) dist1 = 1e8;
    if (events2[i].first == events2[i + 1].first) dist2 = 1e8;
    if (events2[i].first == 0) dist2 = 1e8;
  }
  vector<pair<Point, Point>> res0, res1;
  if (dist1 < dist2) {
    int sx = max(events1[0].first - 1, 0);
    res0.emplace_back(Point{sx + rot1, 0}, Point{sx + rot2, 1000000});
    res1.emplace_back(Point{sx + rot1, 0}, Point{sx + rot2, 1000000});
    for (auto [x, type] : events1) {
      if (type == 0) {
        res0.emplace_back(Point{x + rot1, 0}, Point{x + rot2, 1000000});
        res1.emplace_back(Point{x - 1 + rot1, 0}, Point{x - 1 + rot2, 1000000});
      } else {
        res0.emplace_back(Point{x - 1 + rot1, 0}, Point{x - 1 + rot2, 1000000});
        res1.emplace_back(Point{x + rot1, 0}, Point{x + rot2, 1000000});
      }
    }
  } else {
    int sx = max(events2[0].first - 1, 0);
    res0.emplace_back(Point{0, sx + rot1}, Point{1000000, sx + rot2});
    res1.emplace_back(Point{0, sx + rot1}, Point{1000000, sx + rot2});
    for (auto [x, type] : events2) {
      if (type == 0) {
        res0.emplace_back(Point{0, x + rot1}, Point{1000000, x + rot2});
        res1.emplace_back(Point{0, x + rot1 - 1}, Point{1000000, x + rot2 - 1});
      } else {
        res0.emplace_back(Point{0, x + rot1 - 1}, Point{1000000, x + rot2 - 1});
        res1.emplace_back(Point{0, x + rot1}, Point{1000000, x + rot2});
      }
    }
  }
  return {min(dist1, dist2), res0, res1};
}

void SolveB() {
  int min_dist = 1e8;
  vector<pair<Point, Point>> res0, res1;
  std::tie(min_dist, res0, res1) = SolveBImpl(0);
  for (int rot = -9999; rot < 10000; ++rot) {
    // auto [dist, res0_, res1_] = SolveBImpl(rnd.next(-9900, 9900));
    auto [dist, res0_, res1_] = SolveBImpl(rot);
    // cerr << dist << " " << min_dist << endl;
    if (dist < min_dist) {
      min_dist = dist;
      res0 = res0_;
      res1 = res1_;
    }
  }
  LOG(timer.elapsed());
  Print(res0, res1);
}

int main() {
  SetUp();
  vector<Point> ok;
  vector<Point> ng;
  REP(i,nA) ok.push_back(A[i]);
  REP(i,nB) ng.push_back(B[i]);
  REP(i,nC) ng.push_back(C[i]);
  if (nC == 0) {
    SolveB();
    return 0;
  }
  auto res1 = SolveA(ok, ng);
  vector<pair<Point, Point>> res2;
  if (nB == 0) {
    res2.emplace_back(Point{0, 0}, Point{0, 0});
  } else {
    vector<Point> ok2;
    vector<Point> ng2;
    REP(i,nA) ng2.push_back(A[i]);
    REP(i,nB) ok2.push_back(B[i]);
    REP(i,nC) ng2.push_back(C[i]);
    res2 = SolveA(ok2, ng2);
  }

  Print(res1, res2);

  double elapsed = timer.elapsed();
  LOG(elapsed);
  std::_Exit(0);
  return 0;
}

Submission Info

Submission Time
Task B - Cooperative Trash Sorting (B)
User asi1024
Language C++ 23 (gcc 12.2)
Score 1069765390
Code Size 17382 Byte
Status AC
Exec Time 122 ms
Memory 4000 KiB

Compile Error

Main.cpp: In function ‘void SetUp()’:
Main.cpp:209:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  209 |   scanf("%d%d%d", &nA, &nB, &nC);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:210:19: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  210 |   REP(i, nA) scanf("%lld%lld", &A[i].first, &A[i].second);
      |              ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:211:19: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  211 |   REP(i, nB) scanf("%lld%lld", &B[i].first, &B[i].second);
      |              ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:212:19: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  212 |   REP(i, nC) scanf("%lld%lld", &C[i].first, &C[i].second);
      |              ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Judge Result

Set Name test_ALL
Score / Max Score 1069765390 / 1500000000
Status
AC × 150
Set Name Test Cases
test_ALL test_0000.txt, test_0001.txt, test_0002.txt, test_0003.txt, test_0004.txt, test_0005.txt, test_0006.txt, test_0007.txt, test_0008.txt, test_0009.txt, test_0010.txt, test_0011.txt, test_0012.txt, test_0013.txt, test_0014.txt, test_0015.txt, test_0016.txt, test_0017.txt, test_0018.txt, test_0019.txt, test_0020.txt, test_0021.txt, test_0022.txt, test_0023.txt, test_0024.txt, test_0025.txt, test_0026.txt, test_0027.txt, test_0028.txt, test_0029.txt, test_0030.txt, test_0031.txt, test_0032.txt, test_0033.txt, test_0034.txt, test_0035.txt, test_0036.txt, test_0037.txt, test_0038.txt, test_0039.txt, test_0040.txt, test_0041.txt, test_0042.txt, test_0043.txt, test_0044.txt, test_0045.txt, test_0046.txt, test_0047.txt, test_0048.txt, test_0049.txt, test_0050.txt, test_0051.txt, test_0052.txt, test_0053.txt, test_0054.txt, test_0055.txt, test_0056.txt, test_0057.txt, test_0058.txt, test_0059.txt, test_0060.txt, test_0061.txt, test_0062.txt, test_0063.txt, test_0064.txt, test_0065.txt, test_0066.txt, test_0067.txt, test_0068.txt, test_0069.txt, test_0070.txt, test_0071.txt, test_0072.txt, test_0073.txt, test_0074.txt, test_0075.txt, test_0076.txt, test_0077.txt, test_0078.txt, test_0079.txt, test_0080.txt, test_0081.txt, test_0082.txt, test_0083.txt, test_0084.txt, test_0085.txt, test_0086.txt, test_0087.txt, test_0088.txt, test_0089.txt, test_0090.txt, test_0091.txt, test_0092.txt, test_0093.txt, test_0094.txt, test_0095.txt, test_0096.txt, test_0097.txt, test_0098.txt, test_0099.txt, test_0100.txt, test_0101.txt, test_0102.txt, test_0103.txt, test_0104.txt, test_0105.txt, test_0106.txt, test_0107.txt, test_0108.txt, test_0109.txt, test_0110.txt, test_0111.txt, test_0112.txt, test_0113.txt, test_0114.txt, test_0115.txt, test_0116.txt, test_0117.txt, test_0118.txt, test_0119.txt, test_0120.txt, test_0121.txt, test_0122.txt, test_0123.txt, test_0124.txt, test_0125.txt, test_0126.txt, test_0127.txt, test_0128.txt, test_0129.txt, test_0130.txt, test_0131.txt, test_0132.txt, test_0133.txt, test_0134.txt, test_0135.txt, test_0136.txt, test_0137.txt, test_0138.txt, test_0139.txt, test_0140.txt, test_0141.txt, test_0142.txt, test_0143.txt, test_0144.txt, test_0145.txt, test_0146.txt, test_0147.txt, test_0148.txt, test_0149.txt
Case Name Status Exec Time Memory
test_0000.txt AC 118 ms 3884 KiB
test_0001.txt AC 118 ms 3864 KiB
test_0002.txt AC 117 ms 3876 KiB
test_0003.txt AC 114 ms 3852 KiB
test_0004.txt AC 117 ms 3880 KiB
test_0005.txt AC 119 ms 3856 KiB
test_0006.txt AC 117 ms 3860 KiB
test_0007.txt AC 117 ms 3804 KiB
test_0008.txt AC 115 ms 3924 KiB
test_0009.txt AC 118 ms 3800 KiB
test_0010.txt AC 118 ms 3864 KiB
test_0011.txt AC 118 ms 3876 KiB
test_0012.txt AC 118 ms 3880 KiB
test_0013.txt AC 115 ms 3896 KiB
test_0014.txt AC 116 ms 3756 KiB
test_0015.txt AC 118 ms 3756 KiB
test_0016.txt AC 116 ms 3880 KiB
test_0017.txt AC 116 ms 3996 KiB
test_0018.txt AC 116 ms 3824 KiB
test_0019.txt AC 116 ms 3752 KiB
test_0020.txt AC 116 ms 3884 KiB
test_0021.txt AC 116 ms 3884 KiB
test_0022.txt AC 117 ms 3848 KiB
test_0023.txt AC 116 ms 3828 KiB
test_0024.txt AC 113 ms 3916 KiB
test_0025.txt AC 114 ms 3880 KiB
test_0026.txt AC 118 ms 3884 KiB
test_0027.txt AC 119 ms 3872 KiB
test_0028.txt AC 119 ms 3888 KiB
test_0029.txt AC 113 ms 3756 KiB
test_0030.txt AC 113 ms 3912 KiB
test_0031.txt AC 118 ms 3872 KiB
test_0032.txt AC 119 ms 3804 KiB
test_0033.txt AC 117 ms 3756 KiB
test_0034.txt AC 120 ms 3876 KiB
test_0035.txt AC 117 ms 3888 KiB
test_0036.txt AC 115 ms 3996 KiB
test_0037.txt AC 115 ms 3720 KiB
test_0038.txt AC 118 ms 3896 KiB
test_0039.txt AC 117 ms 3896 KiB
test_0040.txt AC 119 ms 3872 KiB
test_0041.txt AC 119 ms 3756 KiB
test_0042.txt AC 114 ms 3828 KiB
test_0043.txt AC 122 ms 3904 KiB
test_0044.txt AC 118 ms 3828 KiB
test_0045.txt AC 115 ms 3856 KiB
test_0046.txt AC 118 ms 3864 KiB
test_0047.txt AC 117 ms 3876 KiB
test_0048.txt AC 117 ms 3760 KiB
test_0049.txt AC 118 ms 3916 KiB
test_0050.txt AC 114 ms 3920 KiB
test_0051.txt AC 118 ms 3912 KiB
test_0052.txt AC 116 ms 3908 KiB
test_0053.txt AC 116 ms 3928 KiB
test_0054.txt AC 117 ms 4000 KiB
test_0055.txt AC 115 ms 3860 KiB
test_0056.txt AC 118 ms 3932 KiB
test_0057.txt AC 119 ms 3872 KiB
test_0058.txt AC 117 ms 3916 KiB
test_0059.txt AC 119 ms 3824 KiB
test_0060.txt AC 116 ms 3800 KiB
test_0061.txt AC 121 ms 4000 KiB
test_0062.txt AC 117 ms 3800 KiB
test_0063.txt AC 116 ms 3864 KiB
test_0064.txt AC 118 ms 3756 KiB
test_0065.txt AC 120 ms 3796 KiB
test_0066.txt AC 115 ms 3928 KiB
test_0067.txt AC 118 ms 3928 KiB
test_0068.txt AC 118 ms 3888 KiB
test_0069.txt AC 116 ms 3884 KiB
test_0070.txt AC 118 ms 3752 KiB
test_0071.txt AC 113 ms 3852 KiB
test_0072.txt AC 117 ms 3756 KiB
test_0073.txt AC 114 ms 3916 KiB
test_0074.txt AC 115 ms 3900 KiB
test_0075.txt AC 116 ms 3756 KiB
test_0076.txt AC 115 ms 3900 KiB
test_0077.txt AC 118 ms 3928 KiB
test_0078.txt AC 114 ms 3752 KiB
test_0079.txt AC 115 ms 4000 KiB
test_0080.txt AC 119 ms 3896 KiB
test_0081.txt AC 114 ms 3928 KiB
test_0082.txt AC 115 ms 3756 KiB
test_0083.txt AC 116 ms 3872 KiB
test_0084.txt AC 117 ms 3880 KiB
test_0085.txt AC 115 ms 3876 KiB
test_0086.txt AC 118 ms 3928 KiB
test_0087.txt AC 118 ms 3888 KiB
test_0088.txt AC 113 ms 3760 KiB
test_0089.txt AC 117 ms 3880 KiB
test_0090.txt AC 116 ms 3996 KiB
test_0091.txt AC 119 ms 3860 KiB
test_0092.txt AC 116 ms 3884 KiB
test_0093.txt AC 122 ms 3856 KiB
test_0094.txt AC 119 ms 3800 KiB
test_0095.txt AC 115 ms 3884 KiB
test_0096.txt AC 116 ms 3904 KiB
test_0097.txt AC 117 ms 3852 KiB
test_0098.txt AC 114 ms 3852 KiB
test_0099.txt AC 120 ms 3880 KiB
test_0100.txt AC 114 ms 3912 KiB
test_0101.txt AC 115 ms 3752 KiB
test_0102.txt AC 118 ms 3884 KiB
test_0103.txt AC 117 ms 3880 KiB
test_0104.txt AC 117 ms 3756 KiB
test_0105.txt AC 117 ms 3760 KiB
test_0106.txt AC 116 ms 3884 KiB
test_0107.txt AC 115 ms 3852 KiB
test_0108.txt AC 117 ms 3872 KiB
test_0109.txt AC 118 ms 3884 KiB
test_0110.txt AC 117 ms 3900 KiB
test_0111.txt AC 118 ms 3756 KiB
test_0112.txt AC 117 ms 3928 KiB
test_0113.txt AC 117 ms 3760 KiB
test_0114.txt AC 121 ms 3856 KiB
test_0115.txt AC 116 ms 3756 KiB
test_0116.txt AC 119 ms 3820 KiB
test_0117.txt AC 117 ms 3928 KiB
test_0118.txt AC 114 ms 3880 KiB
test_0119.txt AC 121 ms 3880 KiB
test_0120.txt AC 118 ms 3924 KiB
test_0121.txt AC 115 ms 3876 KiB
test_0122.txt AC 117 ms 3860 KiB
test_0123.txt AC 118 ms 3852 KiB
test_0124.txt AC 117 ms 3920 KiB
test_0125.txt AC 120 ms 3856 KiB
test_0126.txt AC 118 ms 3760 KiB
test_0127.txt AC 113 ms 3880 KiB
test_0128.txt AC 117 ms 3800 KiB
test_0129.txt AC 118 ms 3756 KiB
test_0130.txt AC 118 ms 3908 KiB
test_0131.txt AC 119 ms 3856 KiB
test_0132.txt AC 117 ms 3752 KiB
test_0133.txt AC 118 ms 3920 KiB
test_0134.txt AC 119 ms 3872 KiB
test_0135.txt AC 118 ms 3932 KiB
test_0136.txt AC 120 ms 3880 KiB
test_0137.txt AC 117 ms 3876 KiB
test_0138.txt AC 118 ms 3752 KiB
test_0139.txt AC 118 ms 3872 KiB
test_0140.txt AC 118 ms 3856 KiB
test_0141.txt AC 116 ms 3896 KiB
test_0142.txt AC 115 ms 3756 KiB
test_0143.txt AC 115 ms 3876 KiB
test_0144.txt AC 119 ms 3920 KiB
test_0145.txt AC 113 ms 3920 KiB
test_0146.txt AC 119 ms 3756 KiB
test_0147.txt AC 119 ms 3904 KiB
test_0148.txt AC 116 ms 3856 KiB
test_0149.txt AC 116 ms 3888 KiB