QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#105062 | #6351. Exact Subsequences | maspy | AC ✓ | 3ms | 3540kb | C++20 | 21.1kb | 2023-05-12 21:31:13 | 2023-05-12 21:31:23 |
Judging History
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/nt/primetest.hpp"
struct m64 {
using i64 = int64_t;
using u64 = uint64_t;
using u128 = __uint128_t;
inline static u64 m, r, n2; // r * m = -1 (mod 1<<64), n2 = 1<<128 (mod m)
static void set_mod(u64 m) {
assert((m & 1) == 1);
m64::m = m;
n2 = -u128(m) % m;
r = m;
FOR(_, 5) r *= 2 - m * r;
r = -r;
assert(r * m == -1ull);
}
static u64 reduce(u128 b) { return (b + u128(u64(b) * r) * m) >> 64; }
u64 x;
m64() : x(0) {}
m64(u64 x) : x(reduce(u128(x) * n2)){};
u64 val() const {
u64 y = reduce(x);
return y >= m ? y - m : y;
}
m64 &operator+=(m64 y) {
x += y.x - (m << 1);
x = (i64(x) < 0 ? x + (m << 1) : x);
return *this;
}
m64 &operator-=(m64 y) {
x -= y.x;
x = (i64(x) < 0 ? x + (m << 1) : x);
return *this;
}
m64 &operator*=(m64 y) {
x = reduce(u128(x) * y.x);
return *this;
}
m64 operator+(m64 y) const { return m64(*this) += y; }
m64 operator-(m64 y) const { return m64(*this) -= y; }
m64 operator*(m64 y) const { return m64(*this) *= y; }
bool operator==(m64 y) const {
return (x >= m ? x - m : x) == (y.x >= m ? y.x - m : y.x);
}
bool operator!=(m64 y) const { return not operator==(y); }
m64 pow(u64 n) const {
m64 y = 1, z = *this;
for (; n; n >>= 1, z *= z)
if (n & 1) y *= z;
return y;
}
};
bool primetest(const uint64_t x) {
using u64 = uint64_t;
if (x == 2 or x == 3 or x == 5 or x == 7) return true;
if (x % 2 == 0 or x % 3 == 0 or x % 5 == 0 or x % 7 == 0) return false;
if (x < 121) return x > 1;
const u64 d = (x - 1) >> __builtin_ctzll(x - 1);
m64::set_mod(x);
const m64 one(1), minus_one(x - 1);
auto ok = [&](u64 a) {
auto y = m64(a).pow(d);
u64 t = d;
while (y != one and y != minus_one and t != x - 1) y *= y, t <<= 1;
if (y != minus_one and t % 2 == 0) return false;
return true;
};
if (x < (1ull << 32)) {
for (u64 a: {2, 7, 61})
if (not ok(a)) return false;
} else {
for (u64 a: {2, 325, 9375, 28178, 450775, 9780504, 1795265022}) {
if (x <= a) return true;
if (not ok(a)) return false;
}
}
return true;
}
#line 3 "library/nt/factor.hpp"
mt19937_64 rng_mt{random_device{}()};
ll rnd(ll n) { return uniform_int_distribution<ll>(0, n - 1)(rng_mt); }
ll rho(ll n, ll c) {
m64::set_mod(n);
assert(n > 1);
const m64 cc(c);
auto f = [&](m64 x) { return x * x + cc; };
m64 x = 1, y = 2, z = 1, q = 1;
ll g = 1;
const ll m = 1LL << (__lg(n) / 5); // ?
for (ll r = 1; g == 1; r <<= 1) {
x = y;
FOR(_, r) y = f(y);
for (ll k = 0; k < r and g == 1; k += m) {
z = y;
FOR(_, min(m, r - k)) y = f(y), q *= x - y;
g = gcd(q.val(), n);
}
}
if (g == n) do {
z = f(z);
g = gcd((x - z).val(), n);
} while (g == 1);
return g;
}
ll find_prime_factor(ll n) {
assert(n > 1);
if (primetest(n)) return n;
FOR(_, 100) {
ll m = rho(n, rnd(n));
if (primetest(m)) return m;
n = m;
}
cerr << "failed" << endl;
assert(false);
return -1;
}
// ソートしてくれる
vc<pair<ll, int>> factor(ll n) {
assert(n >= 1);
vc<pair<ll, int>> pf;
FOR3(p, 2, 100) {
if (p * p > n) break;
if (n % p == 0) {
ll e = 0;
do { n /= p, e += 1; } while (n % p == 0);
pf.eb(p, e);
}
}
while (n > 1) {
ll p = find_prime_factor(n);
ll e = 0;
do { n /= p, e += 1; } while (n % p == 0);
pf.eb(p, e);
}
sort(all(pf));
return pf;
}
vc<pair<ll, int>> factor_by_lpf(ll n, vc<int>& lpf) {
vc<pair<ll, int>> res;
while (n > 1) {
int p = lpf[n];
int e = 0;
while (n % p == 0) {
n /= p;
++e;
}
res.eb(p, e);
}
return res;
}
#line 1 "library/nt/stern_brocot_tree.hpp"
struct Stern_Brocot_Tree {
using PATH = vi; // はじめは R
static tuple<PATH, pi, pi> get_path_and_range(pi x) {
PATH path;
pi l = {0, 1}, r = {1, 0};
pi m = {1, 1};
ll det_l = l.fi * x.se - l.se * x.fi;
ll det_r = r.fi * x.se - r.se * x.fi;
ll det_m = det_l + det_r;
while (1) {
if (det_m == 0) break;
ll k = ceil(-det_m, det_r);
path.eb(k);
l = {l.fi + k * r.fi, l.se + k * r.se};
m = {l.fi + r.fi, l.se + r.se};
det_l += k * det_r;
det_m += k * det_r;
if (det_m == 0) break;
k = ceil(det_m, -det_l);
path.eb(k);
r = {r.fi + k * l.fi, r.se + k * l.se};
m = {l.fi + r.fi, l.se + r.se};
det_r += k * det_l;
det_m += k * det_l;
}
return {path, l, r};
}
static PATH get_path(pi x) {
auto [path, l, r] = get_path_and_range(x);
return path;
}
static pair<pi, pi> range(pi x) {
auto [path, l, r] = get_path_and_range(x);
return {l, r};
}
// x in range(y)
static bool in_subtree(pi x, pi y) {
auto [l, r] = range(y);
bool ok_l = i128(x.fi) * l.se - i128(x.se) * l.fi > 0;
bool ok_r = i128(r.fi) * x.se - i128(r.se) * x.fi > 0;
return ok_l && ok_r;
}
template <typename T = ll>
static pair<T, T> from_path(PATH& p) {
using P = pair<T, T>;
P l = {0, 1}, r = {1, 0};
FOR(i, len(p)) {
ll k = p[i];
if (i % 2 == 0) {
l.fi += T(k) * r.fi;
l.se += T(k) * r.se;
}
if (i % 2 == 1) {
r.fi += T(k) * l.fi;
r.se += T(k) * l.se;
}
}
return {l.fi + r.fi, l.se + r.se};
}
static pair<pi, pi> child(pi x) {
auto [l, r] = range(x);
pi lc = {l.fi + x.fi, l.se + x.se};
pi rc = {x.fi + r.fi, x.se + r.se};
return {lc, rc};
}
static pi LCA(pi x, pi y) {
auto Px = get_path(x);
auto Py = get_path(y);
vi P;
FOR(i, min(len(Px), len(Py))) {
ll k = min(Px[i], Py[i]);
P.eb(k);
if (k < Px[i] || k < Py[i]) break;
}
return from_path(P);
}
static pi LA(pi x, ll dep) {
pi l = {0, 1}, r = {1, 0};
pi m = {1, 1};
ll det_l = l.fi * x.se - l.se * x.fi;
ll det_r = r.fi * x.se - r.se * x.fi;
ll det_m = det_l + det_r;
while (1) {
if (det_m == 0 || dep == 0) break;
ll k = min(dep, ceil(-det_m, det_r));
l = {l.fi + k * r.fi, l.se + k * r.se};
m = {l.fi + r.fi, l.se + r.se};
det_l += k * det_r;
det_m += k * det_r;
dep -= k;
if (det_m == 0 || dep == 0) break;
k = min(dep, ceil(det_m, -det_l));
r = {r.fi + k * l.fi, r.se + k * l.se};
m = {l.fi + r.fi, l.se + r.se};
det_r += k * det_l;
det_m += k * det_l;
dep -= k;
}
if (dep == 0) return m;
return {-1, -1};
}
static string to_string(PATH& p) {
string res;
char c = 'L';
for (auto&& x: p) {
c = 'L' + 'R' - c;
if (x == 0) continue;
res += c;
res += " " + std::to_string(x);
}
return res;
}
};
#line 5 "main.cpp"
void solve() {
LL(N, K);
N += 2;
auto pf = factor(N);
ll M = len(pf);
vi prod(1 << M, 1);
FOR(i, M) FOR(s, 1 << i) prod[s | 1 << i] = prod[s] * pf[i].fi;
auto f = [&](ll n) -> ll {
// 1 以上 n 以下で N と素
ll cnt = 0;
FOR(s, 1 << M) {
ll x = n / prod[s];
cnt += (popcnt(s) % 2 == 0 ? x : -x);
}
return cnt;
};
if (f(N) < K) return print(-1);
Stern_Brocot_Tree SBT;
ll x = binary_search([&](int x) -> bool { return f(x) >= K; }, N, 0);
auto P = SBT.get_path(pi{x, N});
P.erase(P.begin());
P[0] -= 1;
int a = (P[0] == 0 ? 1 : 0);
if (a) P.erase(P.begin());
print(len(P), a);
print(P);
}
signed main() {
INT(T);
FOR(T) solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 3380kb
input:
8 3 1 3 2 3 3 3 4 3 5 1000000000 1 99824 4353 2129721 207087
output:
1 0 3 2 0 1 1 2 1 1 1 1 1 3 -1 1 0 1000000000 11 0 9 2 2 1 6 2 1 2 7 1 1 9 0 9 9 8 2 4 4 3 5 3
result:
ok 42 numbers
Test #2:
score: 0
Accepted
time: 3ms
memory: 3472kb
input:
100 716270982 22102638 553198855 114744220 973042933 952648509 411855162 12679271 376478639 766516692 701616593 797071538 567088052 832850102 231532599 350649206 638081144 950645496 769653386 879396229 641178981 7765699 683883038 664333826 193902679 953508821 399344120 470742245 477410846 571075073 ...
output:
17 0 12 3 1 3 1 1 18 1 8 1 2 3 5 1 3 11 2 19 0 2 5 1 1 9 9 2 2 1 6 1 4 3 2 1 1 2 4 2 -1 21 0 12 3 1 5 1 1 3 5 1 1 3 1 1 1 19 2 1 1 1 1 3 -1 -1 -1 -1 -1 -1 18 0 78 1 9 4 1 1 1 1 3 1 1 5 1 1 1 16 2 5 -1 -1 -1 -1 -1 16 0 1 6 1 3 1 1 21 2 30 2 15 2 5 1 1 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 0 2 5 9 1 1...
result:
ok 516 numbers
Test #3:
score: 0
Accepted
time: 2ms
memory: 3400kb
input:
100 803577926 732588284 959524552 483692625 937450949 420573788 394257859 670341039 468416448 316269090 710340143 302537836 914428480 585041837 849300324 990185122 893426960 565815587 601153216 726270361 820206654 408906693 809261091 899294748 482302622 501315087 415385715 149723632 473655879 445673...
output:
-1 -1 19 0 1 7 1 1 2 1 43 1 32 2 1 1 1 1 7 1 15 1 1 -1 -1 17 1 1 5 2 2 1 1 46 1 1 2 2 2 10 2 2 7 8 -1 -1 -1 -1 18 1 341 1 2 1 1 1 1 4 1 1 6 4 1 1 1 9 1 11 -1 -1 21 0 1 1 2 3 1 15 1 1 2 11 1 5 1 9 2 1 1 2 1 2 2 17 1 15 1 12 1 2 1 1 5 1 1 1 1 16 5 15 1 5 -1 17 1 1 3 9 1 5 1 59 1 6 2 2 1 1 25 1 1 5 -1 ...
result:
ok 596 numbers
Test #4:
score: 0
Accepted
time: 1ms
memory: 3516kb
input:
100 310973933 1 851906850 1 506991370 1 812835085 1 184055713 1 330046155 1 742234340 1 35064224 1 428641100 1 742376022 1 854982930 1 934966715 1 11821239 1 24666398 1 953701756 1 283022550 1 652857323 1 225091259 1 443560524 1 646130347 1 704023856 1 225047814 1 643039211 1 10434355 1 142462737 1 ...
output:
1 0 310973933 1 0 851906850 1 0 506991370 1 0 812835085 1 0 184055713 1 0 330046155 1 0 742234340 1 0 35064224 1 0 428641100 1 0 742376022 1 0 854982930 1 0 934966715 1 0 11821239 1 0 24666398 1 0 953701756 1 0 283022550 1 0 652857323 1 0 225091259 1 0 443560524 1 0 646130347 1 0 704023856 1 0 22504...
result:
ok 300 numbers
Test #5:
score: 0
Accepted
time: 2ms
memory: 3536kb
input:
100 189 575154303 244 513866599 724 893121161 460 783742901 791 932434605 602 341436697 920 357555133 938 708487917 652 277902399 588 246605698 268 208941807 19 820801694 79 546956091 383 505858553 727 722075077 19 573727679 863 991923941 551 733860625 436 76355365 102 899550340 73 950034371 433 732...
output:
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
result:
ok 100 numbers
Test #6:
score: 0
Accepted
time: 1ms
memory: 3536kb
input:
100 223092868 522742773 223092868 278957336 223092868 10795972 223092868 933104349 223092868 703746065 223092868 499801401 223092868 87818865 223092868 690822764 223092868 773395398 223092868 714043760 223092868 510458728 223092868 528769614 223092868 59550625 223092868 975799724 223092868 830655839...
output:
-1 -1 15 0 2 2 1 1 1 2 4 4 2 15 3 8 15 1 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 18 0 5 1 1 8 1 1 2 1 46 1 5 5 1 5 3 1 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 19 0 3 1 5 1 3 1 7 ...
result:
ok 204 numbers
Test #7:
score: 0
Accepted
time: 2ms
memory: 3480kb
input:
100 999999935 310403983 999999935 72364213 999999935 397038456 999999935 75080336 999999935 454985457 999999935 778137418 999999935 478883812 999999935 588122347 999999935 651540264 999999935 650019250 999999935 584491303 999999935 852022109 999999935 204794560 999999935 38478503 999999935 633363053...
output:
16 0 2 4 1 1 19 1 1 5 2 2 2 21 1 3 1 107 13 0 12 1 4 1 1 9 1 3 82 1 78 1 22 19 0 1 1 1 12 1 9 1 2 2 1 1 2 7 3 23 11 1 1 1 12 0 12 3 7 2 4 1 45 2 2 2 4 118 16 0 1 5 18 1 1 2 144 3 1 1 5 5 2 1 4 1 23 1 3 1 1 33 1 3 3 3 2 1 1 1 4 1 1 1 1 8 1 1 1 2 3 20 0 1 11 2 1 18 29 1 3 2 3 1 1 2 1 1 1 1 1 1 7 20 1 ...
result:
ok 1869 numbers
Test #8:
score: 0
Accepted
time: 0ms
memory: 3372kb
input:
100 2 948507270 2 461613425 2 139535653 2 575270914 2 738803143 2 726699316 2 103994146 2 249524708 2 922817781 2 838029880 2 667513691 2 439784727 2 821461860 2 581510875 2 990481633 2 337473349 2 648674686 2 323922097 2 905107222 2 325476490 2 221111618 2 768519935 2 38017075 2 968148470 2 2181080...
output:
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
result:
ok 100 numbers
Test #9:
score: 0
Accepted
time: 1ms
memory: 3436kb
input:
100 994593598 798824698 994593598 836802674 994593598 681520523 994593598 794670609 994593598 473875349 994593598 10246152 994593598 185505534 994593598 890463296 994593598 99179674 994593598 495304199 994593598 834562731 994593598 674734647 994593598 725257131 994593598 1210263 994593598 172395848 ...
output:
-1 -1 -1 -1 -1 19 0 16 1 4 4 9 1 4 1 6 3 1 2 1 4 7 1 2 1 1 -1 -1 15 1 1 5 4 11 3 1 4 1 3 2 1 1 241 5 2 -1 -1 -1 -1 14 0 149 1 3 2 3 2 1 12 1 2 2 15 1 40 14 1 17 9 1 7 1 5 30 1 2 1 1 8 11 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 18 1 1 8 5 1 2 16 1 2 19 1 1 2 2 2 1 1 11 3 15 0 8 1 5 9 16 3 3 3 3 9 4 1 2...
result:
ok 478 numbers
Test #10:
score: 0
Accepted
time: 2ms
memory: 3436kb
input:
100 611471244 7 285534859 285324624 365254431 8 302700479 10 531626021 1 241407326 119249315 960694338 1 444253010 166613760 378833523 7 792109060 10 41233968 1 19856541 1 948544448 1 480404093 428613111 460814812 1 452369404 213580071 792771208 1 108109408 49140485 640233262 1 693587230 237801302 8...
output:
4 0 47036248 1 2 3 -1 2 0 45656803 7 2 0 30270047 9 1 0 531626021 13 1 81 1 240 1 2 1 1 1 2 31 1 1 5 1 0 960694338 16 1 7 3 6 1 11 1 9 2 1 6 2 6 3 6 1 1 3 0 42092612 1 7 6 0 27314104 1 1 2 2 1 1 0 41233968 1 0 19856541 1 0 948544448 -1 1 0 460814812 -1 1 0 792771208 -1 1 0 640233262 -1 15 1 3 1 28 1...
result:
ok 689 numbers
Test #11:
score: 0
Accepted
time: 2ms
memory: 3396kb
input:
100 486624528 41 826504481 751367707 277260365 1 198842419 197411751 221851582 80 935299711 1 91749879 1 473820636 154959954 978802934 4 388928056 175983814 453541903 450882755 708135976 1 997863449 1 516874672 1 816187863 533373945 23910223 1 132118186 61473249 585259343 2 816641908 408260772 65256...
output:
3 0 4021689 3 39 -1 1 0 277260365 -1 7 0 928248 3 3 1 1 1 5 1 0 935299711 1 0 91749879 16 1 1 1 8 6 36 1 2 2 2 1 7 1 18 2 4 1 3 0 139828989 1 5 -1 -1 1 0 708135976 1 0 997863449 1 0 516874672 16 1 4 2 5 1 5 39 2 1 1 11 1 1 2 15 1 8 1 0 23910223 -1 2 0 292629671 1 -1 16 1 2 3 1 11 3 3 20 6 4 6 1 2 2 ...
result:
ok 596 numbers
Test #12:
score: 0
Accepted
time: 2ms
memory: 3540kb
input:
100 483413348 443 820011935 687 805999661 803837970 880414348 80 370099111 358160589 250102150 98773273 726543000 75 613461382 1 86774162 1 891363559 867271687 30278513 704 112738310 215 89445142 44709732 75764504 776 702277221 443543882 678216524 1 274629757 1 304066337 930 104562487 1 654995466 21...
output:
7 0 372715 1 1 6 19 1 3 6 0 1126389 42 1 4 1 1 -1 6 0 2944528 1 1 2 29 1 -1 -1 7 0 4876126 1 1 7 1 3 1 1 0 613461382 1 0 86774162 -1 9 0 34445 1 1 4 1 3 1 7 1 7 0 253343 1 1 11 4 1 2 -1 8 0 48722 6 2 4 1 2 1 4 21 1 1 1 2 1 4 1 1 3 2 1 5 2 4 1 8 4 2 1 5 1 8 1 0 678216524 1 0 274629757 6 0 323130 13 1...
result:
ok 783 numbers
Test #13:
score: 0
Accepted
time: 0ms
memory: 3524kb
input:
100 283550352 94526185 867566523 2944 562028786 254142878 887589426 295811826 145509559 6216 176986027 2331 225110614 2501 44722121 42087327 969367610 1 513981059 8315 682666637 607754222 229626250 74846852 423497030 617 747716605 596923368 656821366 317814670 922276433 350 568171727 551682118 66597...
output:
12 1 2 1675 2 1 7 9 2 4 2 2 1 2 8 0 190213 9 1 2 6 4 1 3 15 1 9 2 5 2 2 3 4 8 3 1 1 1 2 8 29 15 1 3 6 2 2 10 5 6 26 1 11 3 2 1 1 2 11 0 15606 1 1 2 3 1 1 2 1 4 13 10 0 46029 5 1 1 1 27 1 1 1 1 4 0 29700 1 8 841 17 1 21 1 4 1 1 1 1 2 7 19 1 5 3 1 1 1 1 1 0 969367610 7 0 56043 5 1 29 7 3 1 20 1 9 1 1 ...
result:
ok 891 numbers