QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#835722#9922. Mah-jongucup-team087#AC ✓2230ms8904kbC++2317.3kb2024-12-28 14:12:572024-12-28 14:13:01

Judging History

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

  • [2024-12-28 14:13:01]
  • 评测
  • 测评结果:AC
  • 用时:2230ms
  • 内存:8904kb
  • [2024-12-28 14:12:57]
  • 提交

answer

#line 1 "library/my_template.hpp"
#if defined(LOCAL)
#include <my_template_compiled.hpp>
#else

// https://codeforces.com/blog/entry/96344
#pragma GCC optimize("Ofast,unroll-loops")
// いまの CF だとこれ入れると動かない?
// #pragma GCC target("avx2,popcnt")

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using u8 = uint8_t;
using u16 = uint16_t;
using u32 = uint32_t;
using u64 = uint64_t;
using i128 = __int128;
using u128 = unsigned __int128;
using f128 = __float128;

template <class T>
constexpr T infty = 0;
template <>
constexpr int infty<int> = 1'010'000'000;
template <>
constexpr ll infty<ll> = 2'020'000'000'000'000'000;
template <>
constexpr u32 infty<u32> = infty<int>;
template <>
constexpr u64 infty<u64> = infty<ll>;
template <>
constexpr i128 infty<i128> = i128(infty<ll>) * 2'000'000'000'000'000'000;
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 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); }
int popcnt_sgn(int x) { return (__builtin_parity(unsigned(x)) & 1 ? -1 : 1); }
int popcnt_sgn(u32 x) { return (__builtin_parity(x) & 1 ? -1 : 1); }
int popcnt_sgn(ll x) { return (__builtin_parityll(x) & 1 ? -1 : 1); }
int popcnt_sgn(u64 x) { return (__builtin_parityll(x) & 1 ? -1 : 1); }
// (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>
T kth_bit(int k) {
  return T(1) << k;
}
template <typename T>
bool has_kth_bit(T x, int k) {
  return x >> k & 1;
}

template <typename UINT>
struct all_bit {
  struct iter {
    UINT s;
    iter(UINT s) : s(s) {}
    int operator*() const { return lowbit(s); }
    iter &operator++() {
      s &= s - 1;
      return *this;
    }
    bool operator!=(const iter) const { return s != 0; }
  };
  UINT s;
  all_bit(UINT s) : s(s) {}
  iter begin() const { return iter(s); }
  iter end() const { return iter(0); }
};

template <typename UINT>
struct all_subset {
  static_assert(is_unsigned<UINT>::value);
  struct iter {
    UINT s, t;
    bool ed;
    iter(UINT s) : s(s), t(s), ed(0) {}
    int operator*() const { return s ^ t; }
    iter &operator++() {
      (t == 0 ? ed = 1 : t = (t - 1) & s);
      return *this;
    }
    bool operator!=(const iter) const { return !ed; }
  };
  UINT s;
  all_subset(UINT s) : s(s) {}
  iter begin() const { return iter(s); }
  iter end() const { return iter(0); }
};

template <typename T>
T floor(T a, T b) {
  return a / b - (a % b && (a ^ b) < 0);
}
template <typename T>
T ceil(T x, T y) {
  return floor(x + y - 1, y);
}
template <typename T>
T bmod(T x, T y) {
  return x - y * floor(x, y);
}
template <typename T>
pair<T, T> divmod(T x, T y) {
  T q = floor(x, y);
  return {q, x - q * y};
}

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

#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) {
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(vc<T> &que) {
  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;
    (check(x) ? ok : ng) = 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;
    (check(x) ? ok : ng) = 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;
}

template <typename T, typename... Vectors>
void concat(vc<T> &first, const Vectors &... others) {
  vc<T> &res = first;
  (res.insert(res.end(), others.begin(), others.end()), ...);
}
#endif
#line 1 "library/other/io.hpp"
#define FASTIO
#include <unistd.h>

// https://judge.yosupo.jp/submission/21623
namespace fastio {
static constexpr uint32_t SZ = 1 << 17;
char ibuf[SZ];
char obuf[SZ];
char out[100];
// pointer of ibuf, obuf
uint32_t pil = 0, pir = 0, por = 0;

struct Pre {
  char num[10000][4];
  constexpr Pre() : num() {
    for (int i = 0; i < 10000; i++) {
      int n = i;
      for (int j = 3; j >= 0; j--) {
        num[i][j] = n % 10 | '0';
        n /= 10;
      }
    }
  }
} constexpr pre;

inline void load() {
  memcpy(ibuf, ibuf + pil, pir - pil);
  pir = pir - pil + fread(ibuf + pir - pil, 1, SZ - pir + pil, stdin);
  pil = 0;
  if (pir < SZ) ibuf[pir++] = '\n';
}

inline void flush() {
  fwrite(obuf, 1, por, stdout);
  por = 0;
}

void rd(char &c) {
  do {
    if (pil + 1 > pir) load();
    c = ibuf[pil++];
  } while (isspace(c));
}

void rd(string &x) {
  x.clear();
  char c;
  do {
    if (pil + 1 > pir) load();
    c = ibuf[pil++];
  } while (isspace(c));
  do {
    x += c;
    if (pil == pir) load();
    c = ibuf[pil++];
  } while (!isspace(c));
}

template <typename T>
void rd_real(T &x) {
  string s;
  rd(s);
  x = stod(s);
}

template <typename T>
void rd_integer(T &x) {
  if (pil + 100 > pir) load();
  char c;
  do
    c = ibuf[pil++];
  while (c < '-');
  bool minus = 0;
  if constexpr (is_signed<T>::value || is_same_v<T, i128>) {
    if (c == '-') { minus = 1, c = ibuf[pil++]; }
  }
  x = 0;
  while ('0' <= c) { x = x * 10 + (c & 15), c = ibuf[pil++]; }
  if constexpr (is_signed<T>::value || is_same_v<T, i128>) {
    if (minus) x = -x;
  }
}

void rd(int &x) { rd_integer(x); }
void rd(ll &x) { rd_integer(x); }
void rd(i128 &x) { rd_integer(x); }
void rd(u32 &x) { rd_integer(x); }
void rd(u64 &x) { rd_integer(x); }
void rd(u128 &x) { rd_integer(x); }
void rd(double &x) { rd_real(x); }
void rd(long double &x) { rd_real(x); }
void rd(f128 &x) { rd_real(x); }

template <class T, class U>
void rd(pair<T, U> &p) {
  return rd(p.first), rd(p.second);
}
template <size_t N = 0, typename T>
void rd_tuple(T &t) {
  if constexpr (N < std::tuple_size<T>::value) {
    auto &x = std::get<N>(t);
    rd(x);
    rd_tuple<N + 1>(t);
  }
}
template <class... T>
void rd(tuple<T...> &tpl) {
  rd_tuple(tpl);
}

template <size_t N = 0, typename T>
void rd(array<T, N> &x) {
  for (auto &d: x) rd(d);
}
template <class T>
void rd(vc<T> &x) {
  for (auto &d: x) rd(d);
}

void read() {}
template <class H, class... T>
void read(H &h, T &... t) {
  rd(h), read(t...);
}

void wt(const char c) {
  if (por == SZ) flush();
  obuf[por++] = c;
}
void wt(const string s) {
  for (char c: s) wt(c);
}
void wt(const char *s) {
  size_t len = strlen(s);
  for (size_t i = 0; i < len; i++) wt(s[i]);
}

template <typename T>
void wt_integer(T x) {
  if (por > SZ - 100) flush();
  if (x < 0) { obuf[por++] = '-', x = -x; }
  int outi;
  for (outi = 96; x >= 10000; outi -= 4) {
    memcpy(out + outi, pre.num[x % 10000], 4);
    x /= 10000;
  }
  if (x >= 1000) {
    memcpy(obuf + por, pre.num[x], 4);
    por += 4;
  } else if (x >= 100) {
    memcpy(obuf + por, pre.num[x] + 1, 3);
    por += 3;
  } else if (x >= 10) {
    int q = (x * 103) >> 10;
    obuf[por] = q | '0';
    obuf[por + 1] = (x - q * 10) | '0';
    por += 2;
  } else
    obuf[por++] = x | '0';
  memcpy(obuf + por, out + outi + 4, 96 - outi);
  por += 96 - outi;
}

template <typename T>
void wt_real(T x) {
  ostringstream oss;
  oss << fixed << setprecision(15) << double(x);
  string s = oss.str();
  wt(s);
}

void wt(int x) { wt_integer(x); }
void wt(ll x) { wt_integer(x); }
void wt(i128 x) { wt_integer(x); }
void wt(u32 x) { wt_integer(x); }
void wt(u64 x) { wt_integer(x); }
void wt(u128 x) { wt_integer(x); }
void wt(double x) { wt_real(x); }
void wt(long double x) { wt_real(x); }
void wt(f128 x) { wt_real(x); }

template <class T, class U>
void wt(const pair<T, U> val) {
  wt(val.first);
  wt(' ');
  wt(val.second);
}
template <size_t N = 0, typename T>
void wt_tuple(const T t) {
  if constexpr (N < std::tuple_size<T>::value) {
    if constexpr (N > 0) { wt(' '); }
    const auto x = std::get<N>(t);
    wt(x);
    wt_tuple<N + 1>(t);
  }
}
template <class... T>
void wt(tuple<T...> tpl) {
  wt_tuple(tpl);
}
template <class T, size_t S>
void wt(const array<T, S> val) {
  auto n = val.size();
  for (size_t i = 0; i < n; i++) {
    if (i) wt(' ');
    wt(val[i]);
  }
}
template <class T>
void wt(const vector<T> val) {
  auto n = val.size();
  for (size_t i = 0; i < n; i++) {
    if (i) wt(' ');
    wt(val[i]);
  }
}

void print() { wt('\n'); }
template <class Head, class... Tail>
void print(Head &&head, Tail &&... tail) {
  wt(head);
  if (sizeof...(Tail)) wt(' ');
  print(forward<Tail>(tail)...);
}

// gcc expansion. called automaticall after main.
void __attribute__((destructor)) _d() { flush(); }
} // namespace fastio
using fastio::read;
using fastio::print;
using fastio::flush;

#if defined(LOCAL)
#define SHOW(...) SHOW_IMPL(__VA_ARGS__, SHOW6, SHOW5, SHOW4, SHOW3, SHOW2, SHOW1)(__VA_ARGS__)
#define SHOW_IMPL(_1, _2, _3, _4, _5, _6, NAME, ...) NAME
#define SHOW1(x) print(#x, "=", (x)), flush()
#define SHOW2(x, y) print(#x, "=", (x), #y, "=", (y)), flush()
#define SHOW3(x, y, z) print(#x, "=", (x), #y, "=", (y), #z, "=", (z)), flush()
#define SHOW4(x, y, z, w) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w)), flush()
#define SHOW5(x, y, z, w, v) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w), #v, "=", (v)), flush()
#define SHOW6(x, y, z, w, v, u) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w), #v, "=", (v), #u, "=", (u)), flush()
#else
#define SHOW(...)
#endif

#define INT(...)   \
  int __VA_ARGS__; \
  read(__VA_ARGS__)
#define LL(...)   \
  ll __VA_ARGS__; \
  read(__VA_ARGS__)
#define U32(...)   \
  u32 __VA_ARGS__; \
  read(__VA_ARGS__)
#define U64(...)   \
  u64 __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); }
void YA(bool t = 1) { print(t ? "YA" : "TIDAK"); }
void TIDAK(bool t = 1) { YES(!t); }
#line 3 "main.cpp"

#line 1 "library/enumerate/product.hpp"
// [0, A0) x [0, A1) x ...
template <typename F>
void enumerate_product(vc<int> A, F query) {
  int N = len(A);
  auto dfs = [&](auto& dfs, vc<int>& p) -> void {
    int n = len(p);
    if (n == N) return query(p);
    FOR(x, A[n]) {
      p.eb(x);
      dfs(dfs, p);
      p.pop_back();
    }
  };
  vc<int> p;
  dfs(dfs, p);
}
#line 1 "library/ds/bit_vector.hpp"
struct Bit_Vector {
  int n;
  bool prepared = 0;
  vc<pair<u64, u32>> dat;
  Bit_Vector(int n = 0) : n(n) { dat.assign((n + 127) >> 6, {0, 0}); }
  void set(int i) {
    assert(!prepared && (0 <= i && i < n));
    dat[i >> 6].fi |= u64(1) << (i & 63);
  }
  void reset() {
    fill(all(dat), pair<u64, u32>{0, 0});
    prepared = 0;
  }
  void build() {
    prepared = 1;
    FOR(i, len(dat) - 1) dat[i + 1].se = dat[i].se + popcnt(dat[i].fi);
  }
  // [0, k) 内の 1 の個数
  bool operator[](int i) { return dat[i >> 6].fi >> (i & 63) & 1; }
  int count_prefix(int k, bool f = true) {
    assert(prepared);
    auto [a, b] = dat[k >> 6];
    int ret = b + popcnt(a & ((u64(1) << (k & 63)) - 1));
    return (f ? ret : k - ret);
  }
  int count(int L, int R, bool f = true) { return count_prefix(R, f) - count_prefix(L, f); }
  string to_string() {
    string ans;
    FOR(i, n) ans += '0' + (dat[i / 64].fi >> (i % 64) & 1);
    return ans;
  }
};
#line 6 "main.cpp"

using ARR = array<int, 8>;

int POW[] = {1, 3, 9, 27, 81, 243, 729, 2187, 6561};

int from_ARR(array<int, 8>& A) {
  int x = 0;
  FOR(i, 8) x += (A[i] % 3) * POW[i];
  return x;
}

ARR to_ARR(int x) {
  ARR A;
  FOR(i, 8) { A[i] = x % 3, x /= 3; }
  return A;
}

void solve() {
  LL(N);
  VEC(int, A, N);
  for (auto& x: A) --x;
  vc<ARR> CNT(N + 1);
  FOR(i, N) CNT[i + 1][A[i]]++;
  FOR(i, N) FOR(j, 8) CNT[i + 1][j] += CNT[i][j];

  vc<int> tp(N + 1);
  vvc<int> IDS(POW[8]);
  FOR(i, N + 1) {
    tp[i] = from_ARR(CNT[i]);
    IDS[tp[i]].eb(i);
  }

  vv(int, KTH, 8, 0);
  FOR(i, N) KTH[A[i]].eb(i);
  FOR(i, 8) FOR(10) KTH[i].eb(N + 1);

  vc<array<int, 8>> SIX;
  enumerate_product(vc<int>(6, 3), [&](vc<int> A) -> void {
    ARR B{};
    FOR(i, 6) {
      B[i] += A[i];
      B[i + 1] += A[i];
      B[i + 2] += A[i];
    }
    SIX.eb(B);
  });

  ll ANS = 0;
  FOR(a, POW[8]) {
    if (IDS[a].empty()) continue;
    Bit_Vector bv(N + 1);
    for (auto& i: IDS[a]) bv.set(i);
    bv.build();

    ARR S = to_ARR(a);
    for (auto& ADD: SIX) {
      int b = 0;
      FOR(i, 8) b += POW[i] * ((S[i] + ADD[i]) % 3);
      for (auto& i: IDS[b]) {
        int j = i;
        FOR(x, 8) {
          int n = CNT[i][x];
          n -= ADD[x];
          if (n < 0) {
            j = 0;
            break;
          } else {
            chmin(j, KTH[x][n] + 1);
          }
        }
        ll ans = bv.count(0, j);
        ANS += ans;
      }
    }
  }
  print(ANS);
}

signed main() {
  INT(T);
  FOR(T) solve();
  return 0;
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 4212kb

input:

5
4
1 1 1 1
6
1 2 3 1 2 3
7
6 5 8 7 6 3 2
8
1 2 1 2 1 2 1 3
9
2 2 4 4 1 1 1 3 3

output:

2
5
1
3
2

result:

ok 5 number(s): "2 5 1 3 2"

Test #2:

score: 0
Accepted
time: 1126ms
memory: 4292kb

input:

100
992
8 1 8 1 2 3 6 6 1 3 1 8 7 7 4 7 7 1 6 6 4 8 3 7 3 5 1 4 4 7 5 7 5 7 4 3 7 5 2 8 7 1 6 3 6 2 4 3 2 3 1 6 3 1 3 2 6 6 7 4 6 1 1 4 6 4 7 7 8 5 6 4 1 5 4 8 2 4 4 2 1 3 5 7 6 8 3 7 6 6 5 6 4 2 5 4 3 7 3 5 5 3 3 2 7 8 2 7 2 4 4 3 4 1 1 3 5 5 4 6 3 3 3 2 6 1 2 6 4 8 8 6 6 8 7 3 1 1 8 8 7 2 5 6 3 5 ...

output:

51699
61486
5146
1960
241675
6274
11224
46170
435241
1219228
17198
139542
299436
960439
217729
1174
87401
141087
69813
1
78895
0
39510
16757
86551
0
100302
161956
3
512157
58619
196941
26116
61635
28879
11511
2061
4394
74620
907389
172780
23952
524
87857
1305332
1413
11784
156368
11746
23217
25189
9...

result:

ok 100 numbers

Test #3:

score: 0
Accepted
time: 2230ms
memory: 8576kb

input:

1
100000
7 6 3 7 1 2 5 2 4 5 3 2 6 2 2 2 5 6 5 8 6 2 1 8 2 2 1 1 4 8 2 6 4 1 8 6 6 7 8 4 4 5 4 7 8 6 2 3 3 7 5 7 1 1 3 5 2 8 5 6 3 6 2 3 3 8 4 5 7 8 1 5 6 1 3 4 5 7 1 5 4 4 4 6 6 4 2 3 5 2 7 3 5 8 7 1 5 4 5 4 1 5 8 7 2 2 8 2 4 3 5 7 6 6 1 6 6 3 1 1 3 1 7 8 1 7 3 7 8 3 6 3 5 7 5 1 8 7 4 7 5 4 8 1 3 4...

output:

555222305

result:

ok 1 number(s): "555222305"

Test #4:

score: 0
Accepted
time: 1357ms
memory: 4684kb

input:

20
4413
3 6 4 7 7 2 2 7 8 8 4 1 8 6 6 4 7 3 4 3 2 4 2 3 8 2 2 8 4 2 2 8 6 3 3 6 2 3 3 1 7 3 4 2 8 6 3 2 7 6 2 1 5 7 6 8 4 2 1 8 5 4 1 1 2 4 7 4 5 8 2 1 7 1 1 2 2 2 4 6 7 5 4 7 2 6 7 4 8 6 5 8 8 1 5 1 7 8 1 2 2 8 5 1 8 2 4 2 6 1 3 2 1 7 4 4 7 8 5 8 7 4 6 7 4 1 7 8 6 8 7 7 8 4 6 8 3 6 4 8 2 3 7 5 4 4 ...

output:

1069083
436006
1777187
5525353
859904
20447
1921397
11322
113761
632458
911481
140310
5527193
391225
3870234
1392311
5521780
767038
377958
251269

result:

ok 20 numbers

Test #5:

score: 0
Accepted
time: 1685ms
memory: 5080kb

input:

10
1631
1 5 6 3 1 3 3 1 7 3 2 2 1 2 3 4 6 3 7 4 4 2 5 1 3 1 8 6 8 6 6 4 3 3 3 5 1 5 4 3 2 6 5 7 4 4 3 2 6 7 3 7 6 6 1 7 4 3 2 4 5 2 3 6 8 6 7 1 4 5 4 5 1 7 6 5 2 2 3 8 1 1 6 3 3 8 5 6 8 2 3 2 4 4 6 1 1 7 2 6 3 1 4 1 2 5 7 4 4 6 3 8 8 8 1 1 3 8 8 6 7 6 3 2 8 2 1 6 5 5 4 4 5 3 2 5 7 8 7 5 8 8 1 2 1 4 ...

output:

142582
130392
26184001
1706964
29530837
7819026
1889862
2047254
4622629
9958898

result:

ok 10 numbers

Test #6:

score: 0
Accepted
time: 171ms
memory: 4280kb

input:

100
699
3 5 4 4 2 2 2 4 4 5 4 4 4 2 3 5 4 3 3 4 2 4 5 1 2 2 1 3 4 2 3 5 2 4 4 4 4 4 2 2 2 3 2 4 4 3 5 1 1 1 1 1 5 3 2 2 2 4 1 2 4 5 4 3 4 4 3 1 2 1 2 2 5 2 4 2 3 2 3 1 2 3 1 3 1 4 1 1 2 3 4 4 4 5 5 1 1 1 4 2 4 5 2 4 4 2 2 1 4 3 2 4 2 1 3 3 1 1 1 2 3 2 3 3 4 5 3 1 4 3 2 3 4 1 2 3 1 5 4 1 3 1 4 1 1 4 ...

output:

26614
93607
15542
185945
9610
336083
27587
5973
15452
428708
697
64714
259
21
828
113476
31140
105458
80
23536
5525
1159
12042
40221
3480
19417
67593
2269
413557
158230
35791
252920
14694
17018
49089
181
5249
132040
80726
799827
70851
176451
195473
5082
17942
474031
966
2197
7165
361668
165329
13748...

result:

ok 100 numbers

Test #7:

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

input:

20
6438
6 4 6 2 2 3 6 3 3 6 3 5 2 3 5 3 4 4 6 6 5 4 4 4 6 5 2 3 6 6 6 2 4 2 6 3 2 6 4 4 5 5 5 5 2 3 5 6 3 5 2 3 2 3 6 2 6 4 5 6 6 3 6 2 4 6 6 2 2 5 2 5 3 2 2 5 3 5 2 5 4 4 6 5 6 5 3 2 2 6 6 4 4 6 6 5 3 5 2 3 6 4 6 2 6 2 4 2 5 2 3 2 6 4 3 6 2 2 6 5 2 2 4 6 4 2 2 6 6 2 5 5 6 3 5 4 2 4 6 5 5 2 5 2 5 2 ...

output:

2295109
129235
937429
180801
809871
174359
1198354
743354
795518
130580
84599
3763780
1614768
2235523
4161333
5544144
349912
421552
4172118
5545527

result:

ok 20 numbers

Test #8:

score: 0
Accepted
time: 52ms
memory: 5168kb

input:

10
26316
4 3 2 6 6 5 6 4 2 6 3 6 3 6 6 4 5 2 6 5 4 4 5 4 5 3 3 4 3 6 3 2 2 2 2 2 4 2 5 3 5 4 3 6 5 5 2 4 4 4 3 5 3 3 3 5 3 5 3 4 3 6 6 3 2 4 5 4 4 3 3 6 5 6 2 2 2 3 6 2 3 2 3 2 4 5 3 5 3 2 6 2 2 2 6 4 6 6 4 6 6 6 5 2 4 6 3 5 2 3 4 3 5 5 3 3 5 2 2 4 6 2 5 6 4 6 3 5 3 3 3 2 2 3 4 5 2 5 2 2 5 5 3 3 2 5...

output:

38450451
2276831
7270246
704368
5850869
468608
9764821
13710579
4255399
96369

result:

ok 10 numbers

Test #9:

score: 0
Accepted
time: 71ms
memory: 8904kb

input:

1
100000
7 8 8 5 4 7 7 4 4 7 6 8 5 8 8 6 6 4 8 8 6 8 7 8 4 4 7 4 8 7 4 6 6 5 5 6 8 5 6 4 5 6 6 4 4 7 7 5 4 5 8 4 7 5 7 7 8 8 7 8 6 4 8 5 7 8 5 4 4 4 7 7 4 5 7 4 4 6 6 7 6 6 7 7 4 4 4 6 6 4 6 8 5 6 6 5 7 8 5 7 5 7 6 4 6 6 4 7 5 8 6 7 4 6 8 7 4 7 7 6 6 8 5 4 6 7 5 4 4 4 6 6 6 5 4 6 4 6 8 6 5 5 5 5 7 5...

output:

555459907

result:

ok 1 number(s): "555459907"

Test #10:

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

input:

100
1250
5 6 6 6 5 6 6 5 7 6 6 6 5 7 5 5 6 6 7 5 5 5 5 5 5 7 5 5 6 5 5 5 6 7 5 6 5 7 7 7 7 5 5 7 6 5 7 7 5 6 6 5 5 6 6 7 5 6 6 6 6 6 5 7 5 7 7 5 5 6 5 6 6 7 7 7 7 7 7 5 5 6 6 5 5 6 6 6 5 5 5 5 7 6 6 7 7 5 5 7 5 7 5 7 7 6 6 5 7 6 5 6 5 7 6 5 6 7 6 6 6 6 6 6 7 5 6 7 6 7 7 5 7 7 5 5 6 6 5 5 7 6 6 6 6 7...

output:

86841
34629
45
25861
17828
47611
4229
10999
3019
7915
174644
150587
1388747
931
8024
1143
15819
282708
204457
30072
5134
116143
519353
149357
40372
2405
259501
15816
5574
104552
24707
223938
415556
4003
3687
43
0
69380
19410
121396
5303
100311
811
18848
81468
2
5204
635
107048
152629
39533
13647
168...

result:

ok 100 numbers

Test #11:

score: 0
Accepted
time: 11ms
memory: 4416kb

input:

20
4135
6 8 6 7 7 7 7 8 7 6 6 8 6 7 8 7 7 8 7 8 7 8 6 6 7 8 7 8 6 8 6 6 6 7 7 6 6 8 6 6 8 7 7 8 6 7 8 7 8 6 6 6 8 8 7 7 8 6 6 6 7 7 7 7 7 8 7 6 7 6 7 6 8 8 6 7 6 8 7 6 7 6 6 7 7 6 8 7 8 7 6 7 8 7 6 8 6 6 8 6 6 6 7 6 8 8 8 6 7 7 6 8 7 6 7 8 8 6 8 6 6 8 7 6 6 7 6 8 7 8 6 8 7 6 6 8 6 6 6 8 6 6 8 7 7 8 ...

output:

950096
2194477
5554824
81254
5553178
1573274
194238
668
1982043
58228
1291767
5557012
58027
5225
1463164
4280005
609999
1655471
62184
2077822

result:

ok 20 numbers

Test #12:

score: 0
Accepted
time: 5ms
memory: 5100kb

input:

10
15064
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5...

output:

37818172
46634876
15400026
2035255
27812
69660
92555465
15265745
4010655
42669333

result:

ok 10 numbers

Test #13:

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

input:

1
100000
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8...

output:

1666650000

result:

ok 1 number(s): "1666650000"

Test #14:

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

input:

4
1
5
2
5 6
3
7 6 5
3
7 7 7

output:

0
0
1
1

result:

ok 4 number(s): "0 0 1 1"

Test #15:

score: 0
Accepted
time: 5ms
memory: 8456kb

input:

1
100000
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5...

output:

1666650000

result:

ok 1 number(s): "1666650000"

Test #16:

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

input:

10
1686
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 ...

output:

473485
16665000
16665000
2028272
16665000
16665000
16665000
1238058
9559650
11134350

result:

ok 10 numbers

Test #17:

score: 0
Accepted
time: 12ms
memory: 8484kb

input:

1
100000
2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3...

output:

885341676

result:

ok 1 number(s): "885341676"

Test #18:

score: 0
Accepted
time: 5ms
memory: 4800kb

input:

10
3465
2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 ...

output:

1038578
2938
813044
30782
8661003
8661003
5290235
8661003
5108993
6641544

result:

ok 10 numbers

Extra Test:

score: 0
Extra Test Passed