QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#84109#5667. Meeting PlacesmaspyAC ✓174ms35300kbC++2019.8kb2023-03-05 15:32:222023-03-05 15:32:23

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-05 15:32:23]
  • 评测
  • 测评结果:AC
  • 用时:174ms
  • 内存:35300kb
  • [2023-03-05 15:32:22]
  • 提交

answer

#line 1 "library/my_template.hpp"
#if defined(LOCAL)
#include <my_template_compiled.hpp>
#else
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using u32 = unsigned int;
using u64 = unsigned long long;
using i128 = __int128;

template <class T>
constexpr T infty = 0;
template <>
constexpr int infty<int> = 1'000'000'000;
template <>
constexpr ll infty<ll> = ll(infty<int>) * infty<int> * 2;
template <>
constexpr u32 infty<u32> = infty<int>;
template <>
constexpr u64 infty<u64> = infty<ll>;
template <>
constexpr i128 infty<i128> = i128(infty<ll>) * infty<ll>;
template <>
constexpr double infty<double> = infty<ll>;
template <>
constexpr long double infty<long double> = infty<ll>;

using pi = pair<ll, ll>;
using vi = vector<ll>;
template <class T>
using vc = vector<T>;
template <class T>
using vvc = vector<vc<T>>;
template <class T>
using vvvc = vector<vvc<T>>;
template <class T>
using vvvvc = vector<vvvc<T>>;
template <class T>
using vvvvvc = vector<vvvvc<T>>;
template <class T>
using pq = priority_queue<T>;
template <class T>
using pqg = priority_queue<T, vector<T>, greater<T>>;

#define vv(type, name, h, ...) \
  vector<vector<type>> name(h, vector<type>(__VA_ARGS__))
#define vvv(type, name, h, w, ...)   \
  vector<vector<vector<type>>> name( \
      h, vector<vector<type>>(w, vector<type>(__VA_ARGS__)))
#define vvvv(type, name, a, b, c, ...)       \
  vector<vector<vector<vector<type>>>> name( \
      a, vector<vector<vector<type>>>(       \
             b, vector<vector<type>>(c, vector<type>(__VA_ARGS__))))

// https://trap.jp/post/1224/
#define FOR1(a) for (ll _ = 0; _ < ll(a); ++_)
#define FOR2(i, a) for (ll i = 0; i < ll(a); ++i)
#define FOR3(i, a, b) for (ll i = a; i < ll(b); ++i)
#define FOR4(i, a, b, c) for (ll i = a; i < ll(b); i += (c))
#define FOR1_R(a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR2_R(i, a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR3_R(i, a, b) for (ll i = (b)-1; i >= ll(a); --i)
#define overload4(a, b, c, d, e, ...) e
#define overload3(a, b, c, d, ...) d
#define FOR(...) overload4(__VA_ARGS__, FOR4, FOR3, FOR2, FOR1)(__VA_ARGS__)
#define FOR_R(...) overload3(__VA_ARGS__, FOR3_R, FOR2_R, FOR1_R)(__VA_ARGS__)

#define FOR_subset(t, s) \
  for (ll t = (s); t >= 0; t = (t == 0 ? -1 : (t - 1) & (s)))
#define all(x) x.begin(), x.end()
#define len(x) ll(x.size())
#define elif else if

#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define fi first
#define se second

#define stoi stoll

int popcnt(int x) { return __builtin_popcount(x); }
int popcnt(u32 x) { return __builtin_popcount(x); }
int popcnt(ll x) { return __builtin_popcountll(x); }
int popcnt(u64 x) { return __builtin_popcountll(x); }
// (0, 1, 2, 3, 4) -> (-1, 0, 1, 1, 2)
int topbit(int x) { return (x == 0 ? -1 : 31 - __builtin_clz(x)); }
int topbit(u32 x) { return (x == 0 ? -1 : 31 - __builtin_clz(x)); }
int topbit(ll x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); }
int topbit(u64 x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); }
// (0, 1, 2, 3, 4) -> (-1, 0, 1, 0, 2)
int lowbit(int x) { return (x == 0 ? -1 : __builtin_ctz(x)); }
int lowbit(u32 x) { return (x == 0 ? -1 : __builtin_ctz(x)); }
int lowbit(ll x) { return (x == 0 ? -1 : __builtin_ctzll(x)); }
int lowbit(u64 x) { return (x == 0 ? -1 : __builtin_ctzll(x)); }

template <typename T, typename U>
T ceil(T x, U y) {
  return (x > 0 ? (x + y - 1) / y : x / y);
}
template <typename T, typename U>
T floor(T x, U y) {
  return (x > 0 ? x / y : (x - y + 1) / y);
}
template <typename T, typename U>
pair<T, T> divmod(T x, U y) {
  T q = floor(x, y);
  return {q, x - q * y};
}

template <typename T, typename U>
T SUM(const vector<U> &A) {
  T sum = 0;
  for (auto &&a: A) sum += a;
  return sum;
}

#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define LB(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(all(c), (x)))
#define UNIQUE(x) \
  sort(all(x)), x.erase(unique(all(x)), x.end()), x.shrink_to_fit()

template <typename T>
T POP(deque<T> &que) {
  T a = que.front();
  que.pop_front();
  return a;
}
template <typename T>
T POP(pq<T> &que) {
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(pqg<T> &que) {
  assert(!que.empty());
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(vc<T> &que) {
  assert(!que.empty());
  T a = que.back();
  que.pop_back();
  return a;
}

template <typename F>
ll binary_search(F check, ll ok, ll ng, bool check_ok = true) {
  if (check_ok) assert(check(ok));
  while (abs(ok - ng) > 1) {
    auto x = (ng + ok) / 2;
    tie(ok, ng) = (check(x) ? mp(x, ng) : mp(ok, x));
  }
  return ok;
}
template <typename F>
double binary_search_real(F check, double ok, double ng, int iter = 100) {
  FOR(iter) {
    double x = (ok + ng) / 2;
    tie(ok, ng) = (check(x) ? mp(x, ng) : mp(ok, x));
  }
  return (ok + ng) / 2;
}

template <class T, class S>
inline bool chmax(T &a, const S &b) {
  return (a < b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chmin(T &a, const S &b) {
  return (a > b ? a = b, 1 : 0);
}

// ? は -1
vc<int> s_to_vi(const string &S, char first_char) {
  vc<int> A(S.size());
  FOR(i, S.size()) { A[i] = (S[i] != '?' ? S[i] - first_char : -1); }
  return A;
}

template <typename T, typename U>
vector<T> cumsum(vector<U> &A, int off = 1) {
  int N = A.size();
  vector<T> B(N + 1);
  FOR(i, N) { B[i + 1] = B[i] + A[i]; }
  if (off == 0) B.erase(B.begin());
  return B;
}

// stable sort
template <typename T>
vector<int> argsort(const vector<T> &A) {
  vector<int> ids(len(A));
  iota(all(ids), 0);
  sort(all(ids),
       [&](int i, int j) { return (A[i] == A[j] ? i < j : A[i] < A[j]); });
  return ids;
}

// A[I[0]], A[I[1]], ...
template <typename T>
vc<T> rearrange(const vc<T> &A, const vc<int> &I) {
  vc<T> B(len(I));
  FOR(i, len(I)) B[i] = A[I[i]];
  return B;
}
#endif
#line 1 "library/other/io.hpp"
// based on yosupo's fastio
#include <unistd.h>

namespace fastio {
#define FASTIO
// クラスが read(), print() を持っているかを判定するメタ関数
struct has_write_impl {
  template <class T>
  static auto check(T &&x) -> decltype(x.write(), std::true_type{});

  template <class T>
  static auto check(...) -> std::false_type;
};

template <class T>
class has_write : public decltype(has_write_impl::check<T>(std::declval<T>())) {
};

struct has_read_impl {
  template <class T>
  static auto check(T &&x) -> decltype(x.read(), std::true_type{});

  template <class T>
  static auto check(...) -> std::false_type;
};

template <class T>
class has_read : public decltype(has_read_impl::check<T>(std::declval<T>())) {};

struct Scanner {
  FILE *fp;
  char line[(1 << 15) + 1];
  size_t st = 0, ed = 0;
  void reread() {
    memmove(line, line + st, ed - st);
    ed -= st;
    st = 0;
    ed += fread(line + ed, 1, (1 << 15) - ed, fp);
    line[ed] = '\0';
  }
  bool succ() {
    while (true) {
      if (st == ed) {
        reread();
        if (st == ed) return false;
      }
      while (st != ed && isspace(line[st])) st++;
      if (st != ed) break;
    }
    if (ed - st <= 50) {
      bool sep = false;
      for (size_t i = st; i < ed; i++) {
        if (isspace(line[i])) {
          sep = true;
          break;
        }
      }
      if (!sep) reread();
    }
    return true;
  }
  template <class T, enable_if_t<is_same<T, string>::value, int> = 0>
  bool read_single(T &ref) {
    if (!succ()) return false;
    while (true) {
      size_t sz = 0;
      while (st + sz < ed && !isspace(line[st + sz])) sz++;
      ref.append(line + st, sz);
      st += sz;
      if (!sz || st != ed) break;
      reread();
    }
    return true;
  }
  template <class T, enable_if_t<is_integral<T>::value, int> = 0>
  bool read_single(T &ref) {
    if (!succ()) return false;
    bool neg = false;
    if (line[st] == '-') {
      neg = true;
      st++;
    }
    ref = T(0);
    while (isdigit(line[st])) { ref = 10 * ref + (line[st++] & 0xf); }
    if (neg) ref = -ref;
    return true;
  }
  template <typename T,
            typename enable_if<has_read<T>::value>::type * = nullptr>
  inline bool read_single(T &x) {
    x.read();
    return true;
  }
  bool read_single(double &ref) {
    string s;
    if (!read_single(s)) return false;
    ref = std::stod(s);
    return true;
  }
  bool read_single(char &ref) {
    string s;
    if (!read_single(s) || s.size() != 1) return false;
    ref = s[0];
    return true;
  }
  template <class T>
  bool read_single(vector<T> &ref) {
    for (auto &d: ref) {
      if (!read_single(d)) return false;
    }
    return true;
  }
  template <class T, class U>
  bool read_single(pair<T, U> &p) {
    return (read_single(p.first) && read_single(p.second));
  }
  template <size_t N = 0, typename T>
  void read_single_tuple(T &t) {
    if constexpr (N < std::tuple_size<T>::value) {
      auto &x = std::get<N>(t);
      read_single(x);
      read_single_tuple<N + 1>(t);
    }
  }
  template <class... T>
  bool read_single(tuple<T...> &tpl) {
    read_single_tuple(tpl);
    return true;
  }
  void read() {}
  template <class H, class... T>
  void read(H &h, T &... t) {
    bool f = read_single(h);
    assert(f);
    read(t...);
  }
  Scanner(FILE *fp) : fp(fp) {}
};

struct Printer {
  Printer(FILE *_fp) : fp(_fp) {}
  ~Printer() { flush(); }

  static constexpr size_t SIZE = 1 << 15;
  FILE *fp;
  char line[SIZE], small[50];
  size_t pos = 0;
  void flush() {
    fwrite(line, 1, pos, fp);
    pos = 0;
  }
  void write(const char val) {
    if (pos == SIZE) flush();
    line[pos++] = val;
  }
  template <class T, enable_if_t<is_integral<T>::value, int> = 0>
  void write(T val) {
    if (pos > (1 << 15) - 50) flush();
    if (val == 0) {
      write('0');
      return;
    }
    if (val < 0) {
      write('-');
      val = -val; // todo min
    }
    size_t len = 0;
    while (val) {
      small[len++] = char(0x30 | (val % 10));
      val /= 10;
    }
    for (size_t i = 0; i < len; i++) { line[pos + i] = small[len - 1 - i]; }
    pos += len;
  }
  void write(const string s) {
    for (char c: s) write(c);
  }
  void write(const char *s) {
    size_t len = strlen(s);
    for (size_t i = 0; i < len; i++) write(s[i]);
  }
  void write(const double x) {
    ostringstream oss;
    oss << fixed << setprecision(15) << x;
    string s = oss.str();
    write(s);
  }
  void write(const long double x) {
    ostringstream oss;
    oss << fixed << setprecision(15) << x;
    string s = oss.str();
    write(s);
  }
  template <typename T,
            typename enable_if<has_write<T>::value>::type * = nullptr>
  inline void write(T x) {
    x.write();
  }
  template <class T>
  void write(const vector<T> val) {
    auto n = val.size();
    for (size_t i = 0; i < n; i++) {
      if (i) write(' ');
      write(val[i]);
    }
  }
  template <class T, class U>
  void write(const pair<T, U> val) {
    write(val.first);
    write(' ');
    write(val.second);
  }
  template <size_t N = 0, typename T>
  void write_tuple(const T t) {
    if constexpr (N < std::tuple_size<T>::value) {
      if constexpr (N > 0) { write(' '); }
      const auto x = std::get<N>(t);
      write(x);
      write_tuple<N + 1>(t);
    }
  }
  template <class... T>
  bool write(tuple<T...> tpl) {
    write_tuple(tpl);
    return true;
  }
  template <class T, size_t S>
  void write(const array<T, S> val) {
    auto n = val.size();
    for (size_t i = 0; i < n; i++) {
      if (i) write(' ');
      write(val[i]);
    }
  }
  void write(i128 val) {
    string s;
    bool negative = 0;
    if (val < 0) {
      negative = 1;
      val = -val;
    }
    while (val) {
      s += '0' + int(val % 10);
      val /= 10;
    }
    if (negative) s += "-";
    reverse(all(s));
    if (len(s) == 0) s = "0";
    write(s);
  }
};
Scanner scanner = Scanner(stdin);
Printer printer = Printer(stdout);
void flush() { printer.flush(); }
void print() { printer.write('\n'); }
template <class Head, class... Tail>
void print(Head &&head, Tail &&... tail) {
  printer.write(head);
  if (sizeof...(Tail)) printer.write(' ');
  print(forward<Tail>(tail)...);
}

void read() {}
template <class Head, class... Tail>
void read(Head &head, Tail &... tail) {
  scanner.read(head);
  read(tail...);
}
} // namespace fastio
using fastio::print;
using fastio::flush;
using fastio::read;

#define INT(...)   \
  int __VA_ARGS__; \
  read(__VA_ARGS__)
#define LL(...)   \
  ll __VA_ARGS__; \
  read(__VA_ARGS__)
#define STR(...)      \
  string __VA_ARGS__; \
  read(__VA_ARGS__)
#define CHAR(...)   \
  char __VA_ARGS__; \
  read(__VA_ARGS__)
#define DBL(...)      \
  double __VA_ARGS__; \
  read(__VA_ARGS__)

#define VEC(type, name, size) \
  vector<type> name(size);    \
  read(name)
#define VV(type, name, h, w)                     \
  vector<vector<type>> name(h, vector<type>(w)); \
  read(name)

void YES(bool t = 1) { print(t ? "YES" : "NO"); }
void NO(bool t = 1) { YES(!t); }
void Yes(bool t = 1) { print(t ? "Yes" : "No"); }
void No(bool t = 1) { Yes(!t); }
void yes(bool t = 1) { print(t ? "yes" : "no"); }
void no(bool t = 1) { yes(!t); }
#line 2 "library/geo/base.hpp"
template <typename T>
struct Point {
  T x, y;

  Point() = default;

  template <typename A, typename B>
  Point(A x, B y) : x(x), y(y) {}

  template <typename A, typename B>
  Point(pair<A, B> p) : x(p.fi), y(p.se) {}

  Point operator+(Point p) const { return {x + p.x, y + p.y}; }
  Point operator-(Point p) const { return {x - p.x, y - p.y}; }
  bool operator==(Point p) const { return x == p.x && y == p.y; }
  Point operator-() const { return {-x, -y}; }

  bool operator<(Point p) const {
    if (x != p.x) return x < p.x;
    return y < p.y;
  }
  T dot(Point other) { return x * other.x + y * other.y; }
  T det(Point other) { return x * other.y - y * other.x; }

  void read() { fastio::read(x), fastio::read(y); }
  void write() { fastio::printer.write(pair<T, T>({x, y})); }
};

template <typename T>
int ccw(Point<T> A, Point<T> B, Point<T> C) {
  T x = (B - A).det(C - A);
  if (x > 0) return 1;
  if (x < 0) return -1;
  return 0;
}

template <typename REAL, typename T>
REAL dist(Point<T> A, Point<T> B) {
  A = A - B;
  T p = A.dot(A);
  return sqrt(REAL(p));
}

template <typename T>
struct Line {
  T a, b, c;

  Line(T a, T b, T c) : a(a), b(b), c(c) {}
  Line(Point<T> A, Point<T> B) {
    a = A.y - B.y, b = B.x - A.x, c = A.x * B.y - A.y * B.x;
  }
  Line(T x1, T y1, T x2, T y2) : Line(Point<T>(x1, y1), Point<T>(x2, y2)) {}

  template <typename U>
  U eval(Point<U> P) {
    return a * P.x + b * P.y + c;
  }

  template <typename U>
  T eval(U x, U y) {
    return a * x + b * y + c;
  }

  bool is_parallel(Line other) { return a * other.b - b * other.a == 0; }

  bool is_orthogonal(Line other) { return a * other.a + b * other.b == 0; }
};

template <typename T>
struct Segment {
  Point<T> A, B;

  Segment(Point<T> A, Point<T> B) : A(A), B(B) {}
  Segment(T x1, T y1, T x2, T y2)
      : Segment(Point<T>(x1, y1), Point<T>(x2, y2)) {}

  template <enable_if_t<is_integral<T>::value, int> = 0>
  bool contain(Point<T> C) {
    T det = (C - A).det(B - A);
    if (det != 0) return 0;
    return (C - A).dot(B - A) >= 0 && (C - B).dot(A - B) >= 0;
  }

  Line<T> to_Line() { return Line(A, B); }
};

template <typename REAL>
struct Circle {
  Point<REAL> O;
  REAL r;
  Circle(Point<REAL> O, REAL r) : O(O), r(r) {}
  Circle(REAL x, REAL y, REAL r) : O(x, y), r(r) {}
  template <typename T>
  bool contain(Point<T> p) {
    REAL dx = p.x - O.x, dy = p.y - O.y;
    return dx * dx + dy * dy <= r * r;
  }
};

template <typename T>
struct Polygon {
  vc<Point<T>> points;
  T a;

  template <typename A, typename B>
  Polygon(vc<pair<A, B>> pairs) {
    for (auto&& [a, b]: pairs) points.eb(Point<T>(a, b));
    build();
  }
  Polygon(vc<Point<T>> points) : points(points) { build(); }

  int size() { return len(points); }

  template <typename REAL>
  REAL area() {
    return a * 0.5;
  }

  template <enable_if_t<is_integral<T>::value, int> = 0>
  T area_2() {
    return a;
  }

  bool is_convex() {
    FOR(j, len(points)) {
      int i = (j == 0 ? len(points) - 1 : j - 1);
      int k = (j == len(points) - 1 ? 0 : j + 1);
      if ((points[j] - points[i]).det(points[k] - points[j]) < 0) return false;
    }
    return true;
  }

private:
  void build() {
    a = 0;
    FOR(i, len(points)) {
      int j = (i + 1 == len(points) ? 0 : i + 1);
      a += points[i].det(points[j]);
    }
    if (a < 0) {
      a = -a;
      reverse(all(points));
    }
  }
};
#line 1 "library/geo/triangle_area.hpp"
template <typename REAL, typename T>
REAL triangle_area(Point<T> A, Point<T> B, Point<T> C) {
  return abs((B - A).det(C - A)) * 0.5;
}
#line 3 "library/geo/outcircle.hpp"

template <typename REAL, typename T>
Circle<REAL> outcircle(Point<T> A, Point<T> B, Point<T> C) {
  REAL b1 = B.x - A.x, b2 = B.y - A.y;
  REAL c1 = C.x - A.x, c2 = C.y - A.y;
  REAL bb = (b1 * b1 + b2 * b2) / 2;
  REAL cc = (c1 * c1 + c2 * c2) / 2;

  REAL det = b1 * c2 - b2 * c1;
  REAL x = (bb * c2 - b2 * cc) / det;
  REAL y = (b1 * cc - bb * c1) / det;
  REAL r = sqrt(x * x + y * y);
  x += A.x, y += A.y;
  return Circle<REAL>(x, y, r);
}
#line 5 "main.cpp"

template <typename REAL, typename T>
vc<REAL> minimum_enclosing_circle(vc<Point<T>> points) {
  using C = Circle<REAL>;
  // shuffle(points);
  const int n = len(points);
  assert(n >= 1);
  if (n == 1) { return {0.0, 0.0}; }
  auto make2 = [&](int i, int j) -> C {
    REAL x = (points[i].x + points[j].x) * 0.5;
    REAL y = (points[i].y + points[j].y) * 0.5;
    REAL r = dist<REAL, T>(points[i], points[j]) * 0.5;
    return C(x, y, r);
  };
  auto make3 = [&](int i, int j, int k) -> C {
    return outcircle<REAL, T>(points[i], points[j], points[k]);
  };

  vc<REAL> res = {0.0, 0.0};

  C c = make2(0, 1);
  res.eb(c.r);
  FOR(i, 2, n) {
    if (c.contain(points[i])) {
      res.eb(c.r);
      continue;
    }
    // i を含むという制約で作り直す。
    // これをやるのは確率 O(1/i) で、O(i) 時間かける。
    c = make2(0, i);
    FOR(j, 1, i) {
      if (c.contain(points[j])) continue;
      c = make2(i, j);
      FOR(k, j) {
        if (c.contain(points[k])) continue;
        c = make3(i, j, k);
      }
    }
    res.eb(c.r);
  }
  return res;
}

void solve() {
  LL(N, K, seed);
  vi A(2 * N);
  A[0] = seed;
  FOR(i, 2 * N - 1) A[i + 1] = (A[i] * 233811181 + 1) % ((1LL << 31) - 1);
  // print("A", A);

  using Re = double;
  vc<Point<Re>> points(N);
  FOR(i, N) points[i] = {A[2 * i], A[2 * i + 1]};

  vv(Re, cost, N, N + 1);
  FOR(L, N) {
    auto res
        = minimum_enclosing_circle<Re, Re>({points.begin() + L, points.end()});
    FOR(i, len(res)) cost[L][L + i] = res[i];
  }

  // (L, R, x)
  using T = tuple<int, int, Re>;
  vc<T> edge;
  FOR(L, N) FOR(R, L, N + 1) {
    if (R + 1 <= N && cost[L][R] == cost[L][R + 1]) continue;
    if (L - 1 >= 0 && cost[L][R] == cost[L - 1][R]) continue;
    edge.eb(L, R, cost[L][R]);
  }

  // print(len(edge));

  Re INF = infty<ll>;
  Re ANS = INF;

  vc<Re> dp(N + 1, INF);
  dp[0] = 0;

  FOR(K) {
    chmin(ANS, dp[N]);
    vc<Re> newdp(N + 1, INF);
    for (auto&& [a, b, x]: edge) { chmin(newdp[b], dp[a] + x); }
    swap(dp, newdp);
    chmin(ANS, dp[N]);
  }

  print(ANS);
}

signed main() {
  solve();
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 3700kb

input:

100 23 213

output:

1319350480.800732612609863

result:

ok found '1319350480.8007326', expected '1319350480.8007326', error '0.0000000'

Test #2:

score: 0
Accepted
time: 2ms
memory: 3560kb

input:

10 1 1060

output:

1042753143.345167636871338

result:

ok found '1042753143.3451676', expected '1042753143.3451676', error '0.0000000'

Test #3:

score: 0
Accepted
time: 2ms
memory: 3568kb

input:

10 10 2373

output:

0.000000000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #4:

score: 0
Accepted
time: 2ms
memory: 3508kb

input:

10 2 3396

output:

1236610536.946923017501831

result:

ok found '1236610536.9469230', expected '1236610536.9469230', error '0.0000000'

Test #5:

score: 0
Accepted
time: 1ms
memory: 3640kb

input:

10 3 1998

output:

973790809.822444200515747

result:

ok found '973790809.8224442', expected '973790809.8224442', error '0.0000000'

Test #6:

score: 0
Accepted
time: 0ms
memory: 3700kb

input:

10 4 562

output:

910867389.906932950019836

result:

ok found '910867389.9069330', expected '910867389.9069330', error '0.0000000'

Test #7:

score: 0
Accepted
time: 2ms
memory: 3508kb

input:

10 5 6048

output:

818240814.710515022277832

result:

ok found '818240814.7105150', expected '818240814.7105150', error '0.0000000'

Test #8:

score: 0
Accepted
time: 0ms
memory: 3484kb

input:

10 6 2524

output:

500106979.346776306629181

result:

ok found '500106979.3467763', expected '500106979.3467762', error '0.0000000'

Test #9:

score: 0
Accepted
time: 2ms
memory: 3700kb

input:

10 7 5415

output:

559478971.432005882263184

result:

ok found '559478971.4320059', expected '559478971.4320059', error '0.0000000'

Test #10:

score: 0
Accepted
time: 1ms
memory: 3512kb

input:

10 8 1438

output:

500309745.462769985198975

result:

ok found '500309745.4627700', expected '500309745.4627700', error '0.0000000'

Test #11:

score: 0
Accepted
time: 0ms
memory: 3732kb

input:

10 9 3172

output:

162279748.875345170497894

result:

ok found '162279748.8753452', expected '162279748.8753452', error '0.0000000'

Test #12:

score: 0
Accepted
time: 0ms
memory: 3644kb

input:

100 1 8316

output:

1320052902.152290344238281

result:

ok found '1320052902.1522903', expected '1320052902.1522903', error '0.0000000'

Test #13:

score: 0
Accepted
time: 3ms
memory: 3696kb

input:

100 100 4179

output:

0.000000000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #14:

score: 0
Accepted
time: 2ms
memory: 3864kb

input:

100 12 3405

output:

1329687126.130455017089844

result:

ok found '1329687126.1304550', expected '1329687126.1304548', error '0.0000000'

Test #15:

score: 0
Accepted
time: 2ms
memory: 3772kb

input:

100 16 8378

output:

1338056514.484269380569458

result:

ok found '1338056514.4842694', expected '1338056514.4842694', error '0.0000000'

Test #16:

score: 0
Accepted
time: 2ms
memory: 3636kb

input:

100 2 1858

output:

1310392496.143058061599731

result:

ok found '1310392496.1430581', expected '1310392496.1430581', error '0.0000000'

Test #17:

score: 0
Accepted
time: 0ms
memory: 3632kb

input:

100 25 4596

output:

1440464106.622929811477661

result:

ok found '1440464106.6229298', expected '1440464106.6229298', error '0.0000000'

Test #18:

score: 0
Accepted
time: 0ms
memory: 3852kb

input:

100 3 5633

output:

1399621082.614273786544800

result:

ok found '1399621082.6142738', expected '1399621082.6142738', error '0.0000000'

Test #19:

score: 0
Accepted
time: 2ms
memory: 3644kb

input:

100 32 7827

output:

1342073760.532232999801636

result:

ok found '1342073760.5322330', expected '1342073760.5322330', error '0.0000000'

Test #20:

score: 0
Accepted
time: 1ms
memory: 3696kb

input:

100 4 3693

output:

1339808706.709868669509888

result:

ok found '1339808706.7098687', expected '1339808706.7098689', error '0.0000000'

Test #21:

score: 0
Accepted
time: 1ms
memory: 3692kb

input:

100 5 2252

output:

1394874243.505704164505005

result:

ok found '1394874243.5057042', expected '1394874243.5057042', error '0.0000000'

Test #22:

score: 0
Accepted
time: 2ms
memory: 3636kb

input:

100 50 4254

output:

1322809748.405283689498901

result:

ok found '1322809748.4052837', expected '1322809748.4052832', error '0.0000000'

Test #23:

score: 0
Accepted
time: 2ms
memory: 3852kb

input:

100 6 53

output:

1364441356.170099020004272

result:

ok found '1364441356.1700990', expected '1364441356.1700988', error '0.0000000'

Test #24:

score: 0
Accepted
time: 2ms
memory: 3744kb

input:

100 64 4337

output:

1180754550.242284059524536

result:

ok found '1180754550.2422841', expected '1180754550.2422838', error '0.0000000'

Test #25:

score: 0
Accepted
time: 2ms
memory: 3864kb

input:

100 7 5366

output:

1423557626.358679771423340

result:

ok found '1423557626.3586798', expected '1423557626.3586798', error '0.0000000'

Test #26:

score: 0
Accepted
time: 2ms
memory: 3860kb

input:

100 8 8509

output:

1353289305.351995468139648

result:

ok found '1353289305.3519955', expected '1353289305.3519957', error '0.0000000'

Test #27:

score: 0
Accepted
time: 2ms
memory: 3640kb

input:

100 9 1423

output:

1228887266.566166877746582

result:

ok found '1228887266.5661669', expected '1228887266.5661671', error '0.0000000'

Test #28:

score: 0
Accepted
time: 1ms
memory: 3744kb

input:

100 91 4806

output:

656574218.508675456047058

result:

ok found '656574218.5086755', expected '656574218.5086756', error '0.0000000'

Test #29:

score: 0
Accepted
time: 3ms
memory: 3700kb

input:

100 92 4024

output:

794693428.616224050521851

result:

ok found '794693428.6162241', expected '794693428.6162238', error '0.0000000'

Test #30:

score: 0
Accepted
time: 2ms
memory: 3644kb

input:

100 93 606

output:

677641787.486312150955200

result:

ok found '677641787.4863122', expected '677641787.4863122', error '0.0000000'

Test #31:

score: 0
Accepted
time: 1ms
memory: 3736kb

input:

100 94 7265

output:

686423239.262602806091309

result:

ok found '686423239.2626028', expected '686423239.2626028', error '0.0000000'

Test #32:

score: 0
Accepted
time: 4ms
memory: 3856kb

input:

100 95 8469

output:

328187125.923595070838928

result:

ok found '328187125.9235951', expected '328187125.9235951', error '0.0000000'

Test #33:

score: 0
Accepted
time: 0ms
memory: 3820kb

input:

100 96 1079

output:

492964787.625908553600311

result:

ok found '492964787.6259086', expected '492964787.6259086', error '0.0000000'

Test #34:

score: 0
Accepted
time: 2ms
memory: 3832kb

input:

100 97 5453

output:

258652807.790656447410583

result:

ok found '258652807.7906564', expected '258652807.7906564', error '0.0000000'

Test #35:

score: 0
Accepted
time: 2ms
memory: 3748kb

input:

100 98 1778

output:

159490192.118890702724457

result:

ok found '159490192.1188907', expected '159490192.1188908', error '0.0000000'

Test #36:

score: 0
Accepted
time: 2ms
memory: 3636kb

input:

100 99 1825

output:

33793756.328998044133186

result:

ok found '33793756.3289980', expected '33793756.3289980', error '0.0000000'

Test #37:

score: 0
Accepted
time: 14ms
memory: 11512kb

input:

1000 1 2453

output:

1486878333.285857439041138

result:

ok found '1486878333.2858574', expected '1486878333.2858574', error '0.0000000'

Test #38:

score: 0
Accepted
time: 40ms
memory: 11548kb

input:

1000 1000 1798

output:

0.000000000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #39:

score: 0
Accepted
time: 23ms
memory: 11544kb

input:

1000 125 43

output:

1474031969.517423391342163

result:

ok found '1474031969.5174234', expected '1474031969.5174232', error '0.0000000'

Test #40:

score: 0
Accepted
time: 27ms
memory: 11644kb

input:

1000 128 8107

output:

1440374614.939197778701782

result:

ok found '1440374614.9391978', expected '1440374614.9391975', error '0.0000000'

Test #41:

score: 0
Accepted
time: 41ms
memory: 11680kb

input:

1000 15 6639

output:

1491336935.553624868392944

result:

ok found '1491336935.5536249', expected '1491336935.5536251', error '0.0000000'

Test #42:

score: 0
Accepted
time: 40ms
memory: 11736kb

input:

1000 16 1251

output:

1445211807.116096258163452

result:

ok found '1445211807.1160963', expected '1445211807.1160963', error '0.0000000'

Test #43:

score: 0
Accepted
time: 31ms
memory: 11540kb

input:

1000 2 1303

output:

1468989868.648602247238159

result:

ok found '1468989868.6486022', expected '1468989868.6486022', error '0.0000000'

Test #44:

score: 0
Accepted
time: 20ms
memory: 11540kb

input:

1000 250 4457

output:

1487674970.766015768051147

result:

ok found '1487674970.7660158', expected '1487674970.7660158', error '0.0000000'

Test #45:

score: 0
Accepted
time: 34ms
memory: 11644kb

input:

1000 256 4135

output:

1474218271.514077186584473

result:

ok found '1474218271.5140772', expected '1474218271.5140772', error '0.0000000'

Test #46:

score: 0
Accepted
time: 22ms
memory: 11544kb

input:

1000 3 713

output:

1482496228.990477561950684

result:

ok found '1482496228.9904776', expected '1482496228.9904778', error '0.0000000'

Test #47:

score: 0
Accepted
time: 18ms
memory: 11740kb

input:

1000 31 8139

output:

1494361943.479919433593750

result:

ok found '1494361943.4799194', expected '1494361943.4799194', error '0.0000000'

Test #48:

score: 0
Accepted
time: 18ms
memory: 11616kb

input:

1000 32 7916

output:

1499333171.093864679336548

result:

ok found '1499333171.0938647', expected '1499333171.0938647', error '0.0000000'

Test #49:

score: 0
Accepted
time: 22ms
memory: 11768kb

input:

1000 4 2432

output:

1455826569.039410114288330

result:

ok found '1455826569.0394101', expected '1455826569.0394101', error '0.0000000'

Test #50:

score: 0
Accepted
time: 27ms
memory: 11644kb

input:

1000 5 2457

output:

1452189628.196713924407959

result:

ok found '1452189628.1967139', expected '1452189628.1967139', error '0.0000000'

Test #51:

score: 0
Accepted
time: 26ms
memory: 11732kb

input:

1000 500 8734

output:

1432279300.566278696060181

result:

ok found '1432279300.5662787', expected '1432279300.5662787', error '0.0000000'

Test #52:

score: 0
Accepted
time: 32ms
memory: 11604kb

input:

1000 512 1866

output:

1446804508.035186529159546

result:

ok found '1446804508.0351865', expected '1446804508.0351865', error '0.0000000'

Test #53:

score: 0
Accepted
time: 13ms
memory: 11552kb

input:

1000 6 1580

output:

1490178756.856603384017944

result:

ok found '1490178756.8566034', expected '1490178756.8566034', error '0.0000000'

Test #54:

score: 0
Accepted
time: 34ms
memory: 11776kb

input:

1000 62 3047

output:

1482100829.646710872650146

result:

ok found '1482100829.6467109', expected '1482100829.6467109', error '0.0000000'

Test #55:

score: 0
Accepted
time: 19ms
memory: 11604kb

input:

1000 64 4836

output:

1441850815.855361461639404

result:

ok found '1441850815.8553615', expected '1441850815.8553615', error '0.0000000'

Test #56:

score: 0
Accepted
time: 32ms
memory: 11656kb

input:

1000 7 5269

output:

1473104490.728798389434814

result:

ok found '1473104490.7287984', expected '1473104490.7287984', error '0.0000000'

Test #57:

score: 0
Accepted
time: 19ms
memory: 11556kb

input:

1000 8 2649

output:

1459133296.606623411178589

result:

ok found '1459133296.6066234', expected '1459133296.6066234', error '0.0000000'

Test #58:

score: 0
Accepted
time: 24ms
memory: 11548kb

input:

1000 9 3999

output:

1482914523.380703926086426

result:

ok found '1482914523.3807039', expected '1482914523.3807039', error '0.0000000'

Test #59:

score: 0
Accepted
time: 27ms
memory: 11780kb

input:

1000 991 3610

output:

295501032.478087425231934

result:

ok found '295501032.4780874', expected '295501032.4780874', error '0.0000000'

Test #60:

score: 0
Accepted
time: 30ms
memory: 11768kb

input:

1000 992 3030

output:

337274092.654038131237030

result:

ok found '337274092.6540381', expected '337274092.6540381', error '0.0000000'

Test #61:

score: 0
Accepted
time: 29ms
memory: 11776kb

input:

1000 993 6980

output:

222375113.105798602104187

result:

ok found '222375113.1057986', expected '222375113.1057986', error '0.0000000'

Test #62:

score: 0
Accepted
time: 32ms
memory: 11772kb

input:

1000 994 7222

output:

218007091.693304091691971

result:

ok found '218007091.6933041', expected '218007091.6933041', error '0.0000000'

Test #63:

score: 0
Accepted
time: 25ms
memory: 11600kb

input:

1000 995 1323

output:

169577520.223652899265289

result:

ok found '169577520.2236529', expected '169577520.2236529', error '0.0000000'

Test #64:

score: 0
Accepted
time: 24ms
memory: 11776kb

input:

1000 996 2761

output:

135524743.911448717117310

result:

ok found '135524743.9114487', expected '135524743.9114488', error '0.0000000'

Test #65:

score: 0
Accepted
time: 22ms
memory: 11732kb

input:

1000 997 4946

output:

87043806.422792077064514

result:

ok found '87043806.4227921', expected '87043806.4227921', error '0.0000000'

Test #66:

score: 0
Accepted
time: 22ms
memory: 11552kb

input:

1000 998 842

output:

24094936.551191687583923

result:

ok found '24094936.5511917', expected '24094936.5511917', error '0.0000000'

Test #67:

score: 0
Accepted
time: 24ms
memory: 11612kb

input:

1000 999 5078

output:

4597519.064655033871531

result:

ok found '4597519.0646550', expected '4597519.0646550', error '0.0000000'

Test #68:

score: 0
Accepted
time: 92ms
memory: 35168kb

input:

2000 1 2633

output:

1502350354.499526977539062

result:

ok found '1502350354.4995270', expected '1502350354.4995270', error '0.0000000'

Test #69:

score: 0
Accepted
time: 105ms
memory: 35276kb

input:

2000 1000 6248

output:

1469507093.404211044311523

result:

ok found '1469507093.4042110', expected '1469507093.4042110', error '0.0000000'

Test #70:

score: 0
Accepted
time: 90ms
memory: 35188kb

input:

2000 1024 2507

output:

1448066815.318479299545288

result:

ok found '1448066815.3184793', expected '1448066815.3184788', error '0.0000000'

Test #71:

score: 0
Accepted
time: 139ms
memory: 35152kb

input:

2000 125 3002

output:

1476846542.031891107559204

result:

ok found '1476846542.0318911', expected '1476846542.0318909', error '0.0000000'

Test #72:

score: 0
Accepted
time: 76ms
memory: 35300kb

input:

2000 128 5622

output:

1464957942.640037775039673

result:

ok found '1464957942.6400378', expected '1464957942.6400380', error '0.0000000'

Test #73:

score: 0
Accepted
time: 61ms
memory: 35244kb

input:

2000 15 5891

output:

1490626300.155867099761963

result:

ok found '1490626300.1558671', expected '1490626300.1558671', error '0.0000000'

Test #74:

score: 0
Accepted
time: 58ms
memory: 35064kb

input:

2000 16 1750

output:

1504400245.414980888366699

result:

ok found '1504400245.4149809', expected '1504400245.4149806', error '0.0000000'

Test #75:

score: 0
Accepted
time: 120ms
memory: 35184kb

input:

2000 1990 6698

output:

313951388.404651105403900

result:

ok found '313951388.4046511', expected '313951388.4046511', error '0.0000000'

Test #76:

score: 0
Accepted
time: 112ms
memory: 35056kb

input:

2000 1991 80

output:

248800118.679306030273438

result:

ok found '248800118.6793060', expected '248800118.6793060', error '0.0000000'

Test #77:

score: 0
Accepted
time: 131ms
memory: 35116kb

input:

2000 1992 4802

output:

257156356.521679490804672

result:

ok found '257156356.5216795', expected '257156356.5216795', error '0.0000000'

Test #78:

score: 0
Accepted
time: 113ms
memory: 35112kb

input:

2000 1993 169

output:

197117968.448224782943726

result:

ok found '197117968.4482248', expected '197117968.4482248', error '0.0000000'

Test #79:

score: 0
Accepted
time: 101ms
memory: 35056kb

input:

2000 1994 6269

output:

109695555.808850109577179

result:

ok found '109695555.8088501', expected '109695555.8088501', error '0.0000000'

Test #80:

score: 0
Accepted
time: 122ms
memory: 35284kb

input:

2000 1995 3452

output:

179563229.396784305572510

result:

ok found '179563229.3967843', expected '179563229.3967843', error '0.0000000'

Test #81:

score: 0
Accepted
time: 174ms
memory: 35248kb

input:

2000 1996 2191

output:

84783513.645589575171471

result:

ok found '84783513.6455896', expected '84783513.6455896', error '0.0000000'

Test #82:

score: 0
Accepted
time: 113ms
memory: 35296kb

input:

2000 1997 7803

output:

53635859.339989975094795

result:

ok found '53635859.3399900', expected '53635859.3399900', error '0.0000000'

Test #83:

score: 0
Accepted
time: 169ms
memory: 35060kb

input:

2000 1998 8341

output:

33466185.814944230020046

result:

ok found '33466185.8149442', expected '33466185.8149442', error '0.0000000'

Test #84:

score: 0
Accepted
time: 139ms
memory: 35160kb

input:

2000 1999 6773

output:

2608075.465283261146396

result:

ok found '2608075.4652833', expected '2608075.4652833', error '0.0000000'

Test #85:

score: 0
Accepted
time: 77ms
memory: 35284kb

input:

2000 2 4496

output:

1484602254.131001234054565

result:

ok found '1484602254.1310012', expected '1484602254.1310012', error '0.0000000'

Test #86:

score: 0
Accepted
time: 118ms
memory: 35048kb

input:

2000 2000 5384

output:

0.000000000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #87:

score: 0
Accepted
time: 101ms
memory: 35116kb

input:

2000 250 1029

output:

1465117434.063100576400757

result:

ok found '1465117434.0631006', expected '1465117434.0631006', error '0.0000000'

Test #88:

score: 0
Accepted
time: 54ms
memory: 35116kb

input:

2000 256 5220

output:

1481878242.218473911285400

result:

ok found '1481878242.2184739', expected '1481878242.2184739', error '0.0000000'

Test #89:

score: 0
Accepted
time: 135ms
memory: 35288kb

input:

2000 3 8403

output:

1489320436.431853294372559

result:

ok found '1489320436.4318533', expected '1489320436.4318533', error '0.0000000'

Test #90:

score: 0
Accepted
time: 76ms
memory: 35188kb

input:

2000 31 6950

output:

1477330995.225131034851074

result:

ok found '1477330995.2251310', expected '1477330995.2251310', error '0.0000000'

Test #91:

score: 0
Accepted
time: 96ms
memory: 35284kb

input:

2000 32 3632

output:

1496222504.649006366729736

result:

ok found '1496222504.6490064', expected '1496222504.6490064', error '0.0000000'

Test #92:

score: 0
Accepted
time: 112ms
memory: 35272kb

input:

2000 4 2987

output:

1477889007.505458831787109

result:

ok found '1477889007.5054588', expected '1477889007.5054593', error '0.0000000'

Test #93:

score: 0
Accepted
time: 81ms
memory: 35084kb

input:

2000 5 2580

output:

1485468254.737495183944702

result:

ok found '1485468254.7374952', expected '1485468254.7374952', error '0.0000000'

Test #94:

score: 0
Accepted
time: 109ms
memory: 35064kb

input:

2000 500 6270

output:

1475788271.027598857879639

result:

ok found '1475788271.0275989', expected '1475788271.0275989', error '0.0000000'

Test #95:

score: 0
Accepted
time: 122ms
memory: 35060kb

input:

2000 512 1864

output:

1470340599.474985837936401

result:

ok found '1470340599.4749858', expected '1470340599.4749856', error '0.0000000'

Test #96:

score: 0
Accepted
time: 70ms
memory: 35300kb

input:

2000 6 8814

output:

1497075189.013495683670044

result:

ok found '1497075189.0134957', expected '1497075189.0134962', error '0.0000000'

Test #97:

score: 0
Accepted
time: 123ms
memory: 35276kb

input:

2000 62 4139

output:

1490927650.973212003707886

result:

ok found '1490927650.9732120', expected '1490927650.9732120', error '0.0000000'

Test #98:

score: 0
Accepted
time: 73ms
memory: 35188kb

input:

2000 64 7700

output:

1494910912.613783359527588

result:

ok found '1494910912.6137834', expected '1494910912.6137834', error '0.0000000'

Test #99:

score: 0
Accepted
time: 109ms
memory: 35276kb

input:

2000 7 8304

output:

1488325857.821989297866821

result:

ok found '1488325857.8219893', expected '1488325857.8219898', error '0.0000000'

Test #100:

score: 0
Accepted
time: 64ms
memory: 35056kb

input:

2000 8 7774

output:

1507136513.171559095382690

result:

ok found '1507136513.1715591', expected '1507136513.1715591', error '0.0000000'

Test #101:

score: 0
Accepted
time: 72ms
memory: 35296kb

input:

2000 9 2618

output:

1492019659.037316322326660

result:

ok found '1492019659.0373163', expected '1492019659.0373163', error '0.0000000'

Test #102:

score: 0
Accepted
time: 8ms
memory: 5640kb

input:

500 1 7674

output:

1463672939.781249761581421

result:

ok found '1463672939.7812498', expected '1463672939.7812500', error '0.0000000'

Test #103:

score: 0
Accepted
time: 3ms
memory: 5816kb

input:

500 125 1629

output:

1420736329.083827257156372

result:

ok found '1420736329.0838273', expected '1420736329.0838273', error '0.0000000'

Test #104:

score: 0
Accepted
time: 4ms
memory: 5684kb

input:

500 15 7376

output:

1465677415.506387948989868

result:

ok found '1465677415.5063879', expected '1465677415.5063879', error '0.0000000'

Test #105:

score: 0
Accepted
time: 8ms
memory: 5644kb

input:

500 250 5627

output:

1411074935.882358074188232

result:

ok found '1411074935.8823581', expected '1411074935.8823581', error '0.0000000'

Test #106:

score: 0
Accepted
time: 8ms
memory: 5596kb

input:

500 3 2245

output:

1437079231.540981054306030

result:

ok found '1437079231.5409811', expected '1437079231.5409811', error '0.0000000'

Test #107:

score: 0
Accepted
time: 8ms
memory: 5644kb

input:

500 31 8072

output:

1487957912.031461477279663

result:

ok found '1487957912.0314615', expected '1487957912.0314612', error '0.0000000'

Test #108:

score: 0
Accepted
time: 4ms
memory: 5696kb

input:

500 62 2415

output:

1454787477.649377346038818

result:

ok found '1454787477.6493773', expected '1454787477.6493773', error '0.0000000'

Test #109:

score: 0
Accepted
time: 10ms
memory: 5556kb

input:

500 7 1586

output:

1459900114.704660654067993

result:

ok found '1459900114.7046607', expected '1459900114.7046607', error '0.0000000'