QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#835711 | #9920. Money Game 2 | ucup-team987# | TL | 3789ms | 731520kb | C++23 | 19.1kb | 2024-12-28 14:09:14 | 2024-12-28 14:09:15 |
Judging History
This is the latest submission verdict.
- [2024-12-31 22:17:02]
- hack成功,自动添加数据
- (/hack/1322)
- [2024-12-31 21:57:13]
- hack成功,自动添加数据
- (/hack/1321)
- [2024-12-28 14:09:14]
- Submitted
answer
/**
* date : 2024-12-28 15:09:02
* author : Nyaan
*/
#define NDEBUG
using namespace std;
// intrinstic
#include <immintrin.h>
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <cctype>
#include <cfenv>
#include <cfloat>
#include <chrono>
#include <cinttypes>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdarg>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <fstream>
#include <functional>
#include <initializer_list>
#include <iomanip>
#include <ios>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <streambuf>
#include <string>
#include <tr2/dynamic_bitset>
#include <tuple>
#include <type_traits>
#include <typeinfo>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
// utility
namespace Nyaan {
using ll = long long;
using i64 = long long;
using u64 = unsigned long long;
using i128 = __int128_t;
using u128 = __uint128_t;
template <typename T>
using V = vector<T>;
template <typename T>
using VV = vector<vector<T>>;
using vi = vector<int>;
using vl = vector<long long>;
using vd = V<double>;
using vs = V<string>;
using vvi = vector<vector<int>>;
using vvl = vector<vector<long long>>;
template <typename T>
using minpq = priority_queue<T, vector<T>, greater<T>>;
template <typename T, typename U>
struct P : pair<T, U> {
template <typename... Args>
constexpr P(Args... args) : pair<T, U>(args...) {}
using pair<T, U>::first;
using pair<T, U>::second;
P &operator+=(const P &r) {
first += r.first;
second += r.second;
return *this;
}
P &operator-=(const P &r) {
first -= r.first;
second -= r.second;
return *this;
}
P &operator*=(const P &r) {
first *= r.first;
second *= r.second;
return *this;
}
template <typename S>
P &operator*=(const S &r) {
first *= r, second *= r;
return *this;
}
P operator+(const P &r) const { return P(*this) += r; }
P operator-(const P &r) const { return P(*this) -= r; }
P operator*(const P &r) const { return P(*this) *= r; }
template <typename S>
P operator*(const S &r) const {
return P(*this) *= r;
}
P operator-() const { return P{-first, -second}; }
};
using pl = P<ll, ll>;
using pi = P<int, int>;
using vp = V<pl>;
constexpr int inf = 1001001001;
constexpr long long infLL = 4004004004004004004LL;
template <typename T>
int sz(const T &t) {
return t.size();
}
template <typename T, typename U>
inline bool amin(T &x, U y) {
return (y < x) ? (x = y, true) : false;
}
template <typename T, typename U>
inline bool amax(T &x, U y) {
return (x < y) ? (x = y, true) : false;
}
template <typename T>
inline T Max(const vector<T> &v) {
return *max_element(begin(v), end(v));
}
template <typename T>
inline T Min(const vector<T> &v) {
return *min_element(begin(v), end(v));
}
template <typename T>
inline long long Sum(const vector<T> &v) {
return accumulate(begin(v), end(v), 0LL);
}
template <typename T>
int lb(const vector<T> &v, const T &a) {
return lower_bound(begin(v), end(v), a) - begin(v);
}
template <typename T>
int ub(const vector<T> &v, const T &a) {
return upper_bound(begin(v), end(v), a) - begin(v);
}
constexpr long long TEN(int n) {
long long ret = 1, x = 10;
for (; n; x *= x, n >>= 1) ret *= (n & 1 ? x : 1);
return ret;
}
template <typename T, typename U>
pair<T, U> mkp(const T &t, const U &u) {
return make_pair(t, u);
}
template <typename T>
vector<T> mkrui(const vector<T> &v, bool rev = false) {
vector<T> ret(v.size() + 1);
if (rev) {
for (int i = int(v.size()) - 1; i >= 0; i--) ret[i] = v[i] + ret[i + 1];
} else {
for (int i = 0; i < int(v.size()); i++) ret[i + 1] = ret[i] + v[i];
}
return ret;
};
template <typename T>
vector<T> mkuni(const vector<T> &v) {
vector<T> ret(v);
sort(ret.begin(), ret.end());
ret.erase(unique(ret.begin(), ret.end()), ret.end());
return ret;
}
template <typename F>
vector<int> mkord(int N, F f) {
vector<int> ord(N);
iota(begin(ord), end(ord), 0);
sort(begin(ord), end(ord), f);
return ord;
}
template <typename T>
vector<int> mkinv(vector<T> &v) {
int max_val = *max_element(begin(v), end(v));
vector<int> inv(max_val + 1, -1);
for (int i = 0; i < (int)v.size(); i++) inv[v[i]] = i;
return inv;
}
vector<int> mkiota(int n) {
vector<int> ret(n);
iota(begin(ret), end(ret), 0);
return ret;
}
template <typename T>
T mkrev(const T &v) {
T w{v};
reverse(begin(w), end(w));
return w;
}
template <typename T>
bool nxp(T &v) {
return next_permutation(begin(v), end(v));
}
// 返り値の型は入力の T に依存
// i 要素目 : [0, a[i])
template <typename T>
vector<vector<T>> product(const vector<T> &a) {
vector<vector<T>> ret;
vector<T> v;
auto dfs = [&](auto rc, int i) -> void {
if (i == (int)a.size()) {
ret.push_back(v);
return;
}
for (int j = 0; j < a[i]; j++) v.push_back(j), rc(rc, i + 1), v.pop_back();
};
dfs(dfs, 0);
return ret;
}
// F : function(void(T&)), mod を取る操作
// T : 整数型のときはオーバーフローに注意する
template <typename T>
T Power(T a, long long n, const T &I, const function<void(T &)> &f) {
T res = I;
for (; n; f(a = a * a), n >>= 1) {
if (n & 1) f(res = res * a);
}
return res;
}
// T : 整数型のときはオーバーフローに注意する
template <typename T>
T Power(T a, long long n, const T &I = T{1}) {
return Power(a, n, I, function<void(T &)>{[](T &) -> void {}});
}
template <typename T>
T Rev(const T &v) {
T res = v;
reverse(begin(res), end(res));
return res;
}
template <typename T>
vector<T> Transpose(const vector<T> &v) {
using U = typename T::value_type;
if(v.empty()) return {};
int H = v.size(), W = v[0].size();
vector res(W, T(H, U{}));
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
res[j][i] = v[i][j];
}
}
return res;
}
template <typename T>
vector<T> Rotate(const vector<T> &v, int clockwise = true) {
using U = typename T::value_type;
int H = v.size(), W = v[0].size();
vector res(W, T(H, U{}));
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
if (clockwise) {
res[W - 1 - j][i] = v[i][j];
} else {
res[j][H - 1 - i] = v[i][j];
}
}
}
return res;
}
} // namespace Nyaan
// bit operation
namespace Nyaan {
__attribute__((target("popcnt"))) inline int popcnt(const u64 &a) {
return __builtin_popcountll(a);
}
inline int lsb(const u64 &a) { return a ? __builtin_ctzll(a) : 64; }
inline int ctz(const u64 &a) { return a ? __builtin_ctzll(a) : 64; }
inline int msb(const u64 &a) { return a ? 63 - __builtin_clzll(a) : -1; }
template <typename T>
inline int gbit(const T &a, int i) {
return (a >> i) & 1;
}
template <typename T>
inline void sbit(T &a, int i, bool b) {
if (gbit(a, i) != b) a ^= T(1) << i;
}
constexpr long long PW(int n) { return 1LL << n; }
constexpr long long MSK(int n) { return (1LL << n) - 1; }
} // namespace Nyaan
// inout
namespace Nyaan {
template <typename T, typename U>
ostream &operator<<(ostream &os, const pair<T, U> &p) {
os << p.first << " " << p.second;
return os;
}
template <typename T, typename U>
istream &operator>>(istream &is, pair<T, U> &p) {
is >> p.first >> p.second;
return is;
}
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
int s = (int)v.size();
for (int i = 0; i < s; i++) os << (i ? " " : "") << v[i];
return os;
}
template <typename T>
istream &operator>>(istream &is, vector<T> &v) {
for (auto &x : v) is >> x;
return is;
}
istream &operator>>(istream &is, __int128_t &x) {
string S;
is >> S;
x = 0;
int flag = 0;
for (auto &c : S) {
if (c == '-') {
flag = true;
continue;
}
x *= 10;
x += c - '0';
}
if (flag) x = -x;
return is;
}
istream &operator>>(istream &is, __uint128_t &x) {
string S;
is >> S;
x = 0;
for (auto &c : S) {
x *= 10;
x += c - '0';
}
return is;
}
ostream &operator<<(ostream &os, __int128_t x) {
if (x == 0) return os << 0;
if (x < 0) os << '-', x = -x;
string S;
while (x) S.push_back('0' + x % 10), x /= 10;
reverse(begin(S), end(S));
return os << S;
}
ostream &operator<<(ostream &os, __uint128_t x) {
if (x == 0) return os << 0;
string S;
while (x) S.push_back('0' + x % 10), x /= 10;
reverse(begin(S), end(S));
return os << S;
}
void in() {}
template <typename T, class... U>
void in(T &t, U &...u) {
cin >> t;
in(u...);
}
void out() { cout << "\n"; }
template <typename T, class... U, char sep = ' '>
void out(const T &t, const U &...u) {
cout << t;
if (sizeof...(u)) cout << sep;
out(u...);
}
struct IoSetupNya {
IoSetupNya() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
cout << fixed << setprecision(15);
cerr << fixed << setprecision(7);
}
} iosetupnya;
} // namespace Nyaan
// debug
#ifdef NyaanDebug
#define trc(...) (void(0))
#else
#define trc(...) (void(0))
#endif
#ifdef NyaanLocal
#define trc2(...) (void(0))
#else
#define trc2(...) (void(0))
#endif
// macro
#define each(x, v) for (auto&& x : v)
#define each2(x, y, v) for (auto&& [x, y] : v)
#define all(v) (v).begin(), (v).end()
#define rep(i, N) for (long long i = 0; i < (long long)(N); i++)
#define repr(i, N) for (long long i = (long long)(N)-1; i >= 0; i--)
#define rep1(i, N) for (long long i = 1; i <= (long long)(N); i++)
#define repr1(i, N) for (long long i = (N); (long long)(i) > 0; i--)
#define reg(i, a, b) for (long long i = (a); i < (b); i++)
#define regr(i, a, b) for (long long i = (b)-1; i >= (a); i--)
#define fi first
#define se second
#define ini(...) \
int __VA_ARGS__; \
in(__VA_ARGS__)
#define inl(...) \
long long __VA_ARGS__; \
in(__VA_ARGS__)
#define ins(...) \
string __VA_ARGS__; \
in(__VA_ARGS__)
#define in2(s, t) \
for (int i = 0; i < (int)s.size(); i++) { \
in(s[i], t[i]); \
}
#define in3(s, t, u) \
for (int i = 0; i < (int)s.size(); i++) { \
in(s[i], t[i], u[i]); \
}
#define in4(s, t, u, v) \
for (int i = 0; i < (int)s.size(); i++) { \
in(s[i], t[i], u[i], v[i]); \
}
#define die(...) \
do { \
Nyaan::out(__VA_ARGS__); \
return; \
} while (0)
namespace Nyaan {
void solve();
}
int main() { Nyaan::solve(); }
//
using namespace std;
struct Timer {
chrono::high_resolution_clock::time_point st;
Timer() { reset(); }
void reset() { st = chrono::high_resolution_clock::now(); }
long long elapsed() {
auto ed = chrono::high_resolution_clock::now();
return chrono::duration_cast<chrono::milliseconds>(ed - st).count();
}
long long operator()() { return elapsed(); }
};
template <typename T, typename F>
struct SegmentTree {
int N;
int size;
vector<T> seg;
const F f;
const T I;
SegmentTree(F _f, const T &I_) : N(0), size(0), f(_f), I(I_) {}
SegmentTree(int _N, F _f, const T &I_) : f(_f), I(I_) { init(_N); }
SegmentTree(const vector<T> &v, F _f, T I_) : f(_f), I(I_) {
init(v.size());
for (int i = 0; i < (int)v.size(); i++) {
seg[i + size] = v[i];
}
build();
}
void init(int _N) {
N = _N;
size = 1;
while (size < N) size <<= 1;
seg.assign(2 * size, I);
}
void set(int k, T x) { seg[k + size] = x; }
void build() {
for (int k = size - 1; k > 0; k--) {
seg[k] = f(seg[2 * k], seg[2 * k + 1]);
}
}
void update(int k, T x) {
k += size;
seg[k] = x;
while (k >>= 1) {
seg[k] = f(seg[2 * k], seg[2 * k + 1]);
}
}
void add(int k, T x) {
k += size;
seg[k] += x;
while (k >>= 1) {
seg[k] = f(seg[2 * k], seg[2 * k + 1]);
}
}
// query to [a, b)
T query(int a, int b) {
T L = I, R = I;
for (a += size, b += size; a < b; a >>= 1, b >>= 1) {
if (a & 1) L = f(L, seg[a++]);
if (b & 1) R = f(seg[--b], R);
}
return f(L, R);
}
T &operator[](const int &k) { return seg[k + size]; }
// check(a[l] * ... * a[r-1]) が true となる最大の r
// (右端まですべて true なら N を返す)
template <class C>
int max_right(int l, C check) {
assert(0 <= l && l <= N);
assert(check(I) == true);
if (l == N) return N;
l += size;
T sm = I;
do {
while (l % 2 == 0) l >>= 1;
if (!check(f(sm, seg[l]))) {
while (l < size) {
l = (2 * l);
if (check(f(sm, seg[l]))) {
sm = f(sm, seg[l]);
l++;
}
}
return l - size;
}
sm = f(sm, seg[l]);
l++;
} while ((l & -l) != l);
return N;
}
// check(a[l] * ... * a[r-1]) が true となる最小の l
// (左端まで true なら 0 を返す)
template <typename C>
int min_left(int r, C check) {
assert(0 <= r && r <= N);
assert(check(I) == true);
if (r == 0) return 0;
r += size;
T sm = I;
do {
r--;
while (r > 1 && (r % 2)) r >>= 1;
if (!check(f(seg[r], sm))) {
while (r < size) {
r = (2 * r + 1);
if (check(f(seg[r], sm))) {
sm = f(seg[r], sm);
r--;
}
}
return r + 1 - size;
}
sm = f(seg[r], sm);
} while ((r & -r) != r);
return 0;
}
};
using namespace Nyaan;
namespace ei13333 {
/**
* @brief Disjoint-Sparse-Table
*
*/
template <typename Semigroup, typename F>
struct DisjointSparseTable {
const F f;
vector<vector<Semigroup> > st;
vector<int> lookup;
DisjointSparseTable(const vector<Semigroup>& v, const F& f) : f(f) {
int b = 0;
while ((1 << b) <= v.size()) ++b;
st.resize(b, vector<Semigroup>(v.size(), Semigroup()));
for (int i = 0; i < v.size(); i++) st[0][i] = v[i];
for (int i = 1; i < b; i++) {
int shift = 1 << i;
for (int j = 0; j < v.size(); j += shift << 1) {
int t = min(j + shift, (int)v.size());
st[i][t - 1] = v[t - 1];
for (int k = t - 2; k >= j; k--) st[i][k] = f(v[k], st[i][k + 1]);
if (v.size() <= t) break;
st[i][t] = v[t];
int r = min(t + shift, (int)v.size());
for (int k = t + 1; k < r; k++) st[i][k] = f(st[i][k - 1], v[k]);
}
}
lookup.resize(1 << b);
for (int i = 2; i < lookup.size(); i++) {
lookup[i] = lookup[i >> 1] + 1;
}
}
Semigroup fold(int l, int r) {
if (l >= --r) return st[0][l];
int p = lookup[l ^ r];
return f(st[p][l], st[p][r]);
}
};
template <typename SemiGroup, typename F>
DisjointSparseTable<SemiGroup, F> get_disjoint_sparse_table(
const vector<SemiGroup>& v, const F& f) {
return {v, f};
}
} // namespace ei13333
// a * 2^n + b
ll saturated_fma(ll a, ll n, ll b) {
if (a == 0) return b;
ll t = msb(a);
if (t + n >= 62) return infLL;
ll x = (a << n) + b;
return min(infLL, x);
}
// a - b/2^n
struct Data {
int a, n;
ll b;
Data(ll x = 0) : a(x), n(1), b(0) {}
Data(ll _a, ll _b, ll _n) : a(_a), n(_n), b(_b) {}
ll get() { return a - (b > 0); }
// l <- r
static Data ti() { return {-1, -1, -1}; }
friend Data merge(const Data& l, const Data& r) {
if (l.n == -1) return r;
if (r.n == -1) return l;
ll a = l.a, b = l.b, n = l.n;
ll c = r.a, d = r.b, m = r.n;
if (b >= c) return {a, saturated_fma(b - c, m, d), n + m};
if (n >= 62) return {a + 1, infLL, n + m};
ll e = c - b;
ll f = (e + PW(n) - 1) >> n;
a += f;
e -= f << n;
return {a, saturated_fma(-e, m, d), n + m};
}
};
void q() {
ini(N);
vi a(N);
in(a);
V<Data> init;
rep(t, 2) rep(i, N) init.push_back(Data{a[i]});
SegmentTree seg(
init, [](const Data& l, const Data& r) { return merge(l, r); },
Data::ti());
SegmentTree segrev(
init, [](const Data& l, const Data& r) { return merge(r, l); },
Data::ti());
ei13333::DisjointSparseTable dst(
init, [](const Data& l, const Data& r) { return merge(l, r); });
ei13333::DisjointSparseTable dstrev(
init, [](const Data& l, const Data& r) { return merge(r, l); });
auto mod = [&](int i) { return (i % N + N) % N; };
// [from, to]
// rev=0 : to が左側にある
// rev=1 : to が右側にある
auto query = [&](int to, int from, bool rev) {
if (rev) swap(to, from);
if (to > from) from += N;
if (!rev) {
return dst.fold(to, from + 1);
} else {
return dstrev.fold(to, from + 1);
}
};
// j-1 と j の間に切れ目を入れる
// [i+1,...,j-1]
// [j,...,i-1]
// を i に加算
auto search = [&](ll i, ll j) {
ll res = a[i];
ll a1 = 0, a2 = 0;
if (j != mod(i + 1)) a1 = query(mod(i + 1), mod(j - 1), 0).get();
if (j != mod(i + 0)) a2 = query(mod(i - 1), mod(j - 0), 1).get();
res += a1 / 2 + a2 / 2;
return res;
};
vl ans(N);
rep(i, N) {
/*
{
ll cur = 0;
rep(j, N) amax(cur, search(i, j));
ans[i] = cur;
}
*/
ans[i] = a[i];
{
ll cur = 0;
while (true) {
// [i,r].get() > cur
int r = seg.max_right(i, [&](Data d) { return d.get() <= cur; });
if (r >= i + N) break;
amax(ans[i], search(i, mod(r + 1)));
cur = seg.query(i, r + 1).get();
}
}
{
ll cur = 0;
while (true) {
// [l,N+i].get()>cur
int l =
segrev.min_left(N + i + 1, [&](Data d) { return d.get() <= cur; });
l--;
if (l <= i) break;
amax(ans[i], search(i, mod(l)));
cur = segrev.query(l, N + i + 1).get();
}
}
}
out(ans);
/*
vl ans(N);
rep(i, N) {
ans[i] = a[i];
amax(ans[i], search(i, mod(i + 1)));
amax(ans[i], search(i, mod(i + 0)));
amax(ans[i], search(i, mod(i - 1)));
{
int r = i;
Data d{a[i]};
while (true) {
// [i,r].get() > cur
if (r - i < 30) {
if (r >= i + N) break;
r++;
if (r >= i + N) break;
ll old_g = d.get();
d = merge(d, a[mod(r)]);
ll new_g = d.get();
if (old_g < new_g) amax(ans[i], search(i, mod(r + 1)));
continue;
}
ll cur = seg.query(i, r + 1).get();
r = seg.max_right(i, [&](Data d) { return d.get() <= cur; });
if (r >= i + N) break;
amax(ans[i], search(i, mod(r + 1)));
}
}
{
int l = N + i;
Data d{a[i]};
while (true) {
// [l,N+i].get()>cur
if (N + i - l < 30) {
if (l <= i) break;
l--;
if (l <= i) break;
ll old_g = d.get();
d = merge(d, a[mod(l)]);
ll new_g = d.get();
if (old_g < new_g) amax(ans[i], search(i, mod(l)));
continue;
}
ll cur = segrev.query(l, N + i + 1).get();
l = segrev.min_left(N + i + 1, [&](Data d) { return d.get() <= cur; }) -
1;
if (l <= i) break;
amax(ans[i], search(i, mod(l)));
}
}
}
out(ans);
*/
}
void Nyaan::solve() {
Timer timer;
int t = 1;
in(t);
while (t--) q();
trc2(timer());
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3612kb
input:
3 5 2 1 4 3 5 5 2 1 3 1 2 1 1000000000
output:
6 5 7 8 8 4 4 5 4 4 1000000000
result:
ok 11 numbers
Test #2:
score: 0
Accepted
time: 0ms
memory: 3856kb
input:
1 10 8 15 18 15 13 4 14 4 17 5
output:
30 37 41 39 34 27 29 26 31 27
result:
ok 10 numbers
Test #3:
score: 0
Accepted
time: 2ms
memory: 3572kb
input:
1000 4 8 9 7 9 1 9 1 10 2 3 9 3 4 3 2 4 0 4 3 1 4 10 8 4 6 1 9 1 4 4 10 10 1 6 1 9 1 0 2 4 6 4 8 1 6 7 2 5 10 4 9 2 1 4 3 5 5 9 3 9 8 9 4 4 8 5 6 2 10 1 1 7 3 9 2 4 4 2 4 1 2 3 5 2 1 1 4 3 2 0 9 4 7 3 10 1 3 4 1 2 2 6 4 1 2 3 3 1 5 3 5 8 4 2 9 3 4 5 9 10 3 4 6 5 4 0 1 6 4 3 1 10 1 4 1 9 5 7 4 8 1 6 ...
output:
18 18 17 18 9 10 7 10 6 6 5 3 5 5 3 18 16 13 15 9 4 18 17 11 14 9 0 7 8 13 9 11 14 10 12 12 7 6 9 11 11 13 17 16 17 12 14 13 12 10 6 7 12 8 9 5 6 4 4 6 4 4 4 6 5 10 11 11 13 10 5 4 4 8 7 2 5 4 6 11 12 10 10 7 13 17 16 12 9 10 8 6 6 6 7 11 7 9 13 12 11 14 10 12 16 18 15 18 19 5 11 13 4 4 6 7 12 14 13...
result:
ok 2420 numbers
Test #4:
score: 0
Accepted
time: 2ms
memory: 3624kb
input:
1000 2 45733740 736448710 1 384264719 4 658671808 379716865 553196572 534986092 1 668964623 4 711670857 237459905 849354895 187613938 2 394629064 371184128 2 616819808 937720703 1 43217931 3 934395080 888433507 810476236 1 587663687 2 542163302 508453558 4 313836277 584869499 445629251 225398284 4 2...
output:
413958095 759315580 384264719 1254322429 1119397578 1175216002 1235849498 668964623 1136546502 1064876265 1239809530 1027491789 580221128 568498660 1085680159 1246130607 43217931 1783849951 1760869165 1721890529 587663687 796390081 779535209 830377481 1020951833 929222211 751348422 704770986 7551365...
result:
ok 2440 numbers
Test #5:
score: 0
Accepted
time: 575ms
memory: 731076kb
input:
1 500000 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 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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...
result:
ok 500000 numbers
Test #6:
score: 0
Accepted
time: 553ms
memory: 731224kb
input:
1 499999 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 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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...
result:
ok 499999 numbers
Test #7:
score: 0
Accepted
time: 587ms
memory: 730828kb
input:
1 499800 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 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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...
result:
ok 499800 numbers
Test #8:
score: 0
Accepted
time: 3789ms
memory: 731184kb
input:
1 500000 50831937 44675374 26273308 55922669 39121681 59988372 34492729 33442351 51180456 41692596 39437453 54897084 38001252 46544549 55093280 38264131 54229588 51914925 28566111 46796223 48610138 48548724 51107017 44611895 37985173 46091996 45517937 53008497 48179451 47964156 42155259 47184755 267...
output:
137137494 130644721 122461248 136098437 133900842 139971148 126044470 123400935 132294341 130564235 131577353 139222968 134134442 139111260 143826886 137816035 143317006 139132099 126640855 134620873 139716994 141756406 141850936 136210410 131757247 136204948 139617130 144560973 142272557 138851244 ...
result:
ok 500000 numbers
Test #9:
score: 0
Accepted
time: 3728ms
memory: 731216kb
input:
1 500000 25452585 60227199 37756030 41287924 48217237 52318161 46751058 48760576 45326727 50656052 42012818 49755082 50064918 39821656 41870920 49087328 53628763 49607632 27859818 29150585 58180124 43787581 54102015 41307343 45882355 44562399 32249571 47861371 54219662 44016656 52635402 44018938 369...
output:
122077771 137295072 130819111 133118661 140045656 144669625 143151165 143081702 141412226 142458774 138750631 141398577 140113190 133787022 134621881 139961301 141650380 133721506 118241937 120093611 138266213 138301736 141806757 135062134 133887565 130833246 126351953 136672280 143536692 140839958 ...
result:
ok 500000 numbers
Test #10:
score: 0
Accepted
time: 3692ms
memory: 731276kb
input:
1 500000 50077500 57462422 30708014 58310827 32563574 43315826 53400776 52368101 32196492 41610551 53797342 43848605 47176214 52736999 37077497 57580160 33273499 50017090 51287872 38575250 33970872 41050429 47332854 62688024 30029626 50837045 28881546 45104946 52887401 45535679 51980189 44643837 464...
output:
142897147 144399000 131906720 139305780 128891491 134077587 141328738 139143094 127976847 132504286 140868042 138969806 140783567 142224791 135672912 141341245 131309961 137023409 136222928 126602103 122419456 128490229 137230474 143586676 127704181 130629339 122613599 132582341 141184835 141048645 ...
result:
ok 500000 numbers
Test #11:
score: 0
Accepted
time: 3713ms
memory: 731136kb
input:
1 500000 50990079 48693213 38486675 52357538 47585564 46899198 45489174 49673180 50114681 32504665 53579548 39409968 47465702 51608057 48059738 41865634 41938584 49570423 51076776 45761549 56164212 33467947 50568038 52412481 52335534 31075296 55678331 36469490 61117776 25861594 49142780 48449043 467...
output:
134813829 137015630 134685428 141967928 141698085 140898940 140200468 141368470 138710938 130236855 138124202 134704329 139521670 142901293 140319478 135807796 136401562 142288234 144963390 143505077 145156980 135141056 142493741 145241240 141990638 131232054 139476554 133941836 140673801 126066004 ...
result:
ok 500000 numbers
Test #12:
score: 0
Accepted
time: 326ms
memory: 3624kb
input:
100000 5 0 0 0 0 0 5 1 0 0 0 0 5 2 0 0 0 0 5 3 0 0 0 0 5 4 0 0 0 0 5 5 0 0 0 0 5 6 0 0 0 0 5 7 0 0 0 0 5 8 0 0 0 0 5 9 0 0 0 0 5 10 0 0 0 0 5 0 1 0 0 0 5 1 1 0 0 0 5 2 1 0 0 0 5 3 1 0 0 0 5 4 1 0 0 0 5 5 1 0 0 0 5 6 1 0 0 0 5 7 1 0 0 0 5 8 1 0 0 0 5 9 1 0 0 0 5 10 1 0 0 0 5 0 2 0 0 0 5 1 2 0 0 0 5 2...
output:
0 0 0 0 0 1 0 0 0 0 2 1 0 0 1 3 1 0 0 1 4 2 1 1 2 5 2 1 1 2 6 3 1 1 3 7 3 1 1 3 8 4 2 2 4 9 4 2 2 4 10 5 2 2 5 0 1 0 0 0 1 1 0 0 0 2 2 1 0 1 3 2 1 0 1 4 3 1 1 2 5 3 1 1 2 6 4 2 1 3 7 4 2 1 3 8 5 2 2 4 9 5 2 2 4 10 6 3 2 5 1 2 1 0 0 2 2 1 0 1 3 3 1 0 1 4 3 1 1 2 5 4 2 1 2 6 4 2 1 3 7 5 2 1 3 8 5 2 2 ...
result:
ok 500000 numbers
Test #13:
score: 0
Accepted
time: 271ms
memory: 3576kb
input:
83333 6 0 0 0 0 0 0 6 1 0 0 0 0 0 6 2 0 0 0 0 0 6 3 0 0 0 0 0 6 4 0 0 0 0 0 6 5 0 0 0 0 0 6 6 0 0 0 0 0 6 7 0 0 0 0 0 6 0 1 0 0 0 0 6 1 1 0 0 0 0 6 2 1 0 0 0 0 6 3 1 0 0 0 0 6 4 1 0 0 0 0 6 5 1 0 0 0 0 6 6 1 0 0 0 0 6 7 1 0 0 0 0 6 0 2 0 0 0 0 6 1 2 0 0 0 0 6 2 2 0 0 0 0 6 3 2 0 0 0 0 6 4 2 0 0 0 0 ...
output:
0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 0 1 3 1 0 0 0 1 4 2 1 0 1 2 5 2 1 0 1 2 6 3 1 0 1 3 7 3 1 0 1 3 0 1 0 0 0 0 1 1 0 0 0 0 2 2 1 0 0 1 3 2 1 0 0 1 4 3 1 0 1 2 5 3 1 0 1 2 6 4 2 1 1 3 7 4 2 1 1 3 1 2 1 0 0 0 2 2 1 0 0 1 3 3 1 0 0 1 4 3 1 0 1 2 5 4 2 1 1 2 6 4 2 1 1 3 7 5 2 1 1 3 8 5 2 1 2 4 1 3 1 0 0 0 ...
result:
ok 499998 numbers
Test #14:
score: 0
Accepted
time: 197ms
memory: 3620kb
input:
50000 10 0 0 0 0 0 0 0 0 0 0 10 1 0 0 0 0 0 0 0 0 0 10 2 0 0 0 0 0 0 0 0 0 10 3 0 0 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 0 0 10 1 1 0 0 0 0 0 0 0 0 10 2 1 0 0 0 0 0 0 0 0 10 3 1 0 0 0 0 0 0 0 0 10 0 2 0 0 0 0 0 0 0 0 10 1 2 0 0 0 0 0 0 0 0 10 2 2 0 0 0 0 0 0 0 0 10 3 2 0 0 0 0 0 0 0 0 10 0 3 0 0 0 0 0 0...
output:
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 3 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 2 1 0 0 0 0 0 0 1 3 2 1 0 0 0 0 0 0 1 1 2 1 0 0 0 0 0 0 0 2 2 1 0 0 0 0 0 0 1 3 3 1 0 0 0 0 0 0 1 4 3 1 0 0 0 0 0 1 2 1 3 1 0 0 0 0 0 0 0 2 3 1 0 0 0 0 0 0 1 3 4 2 1 0 0 0 0 0 1 ...
result:
ok 500000 numbers
Test #15:
score: 0
Accepted
time: 432ms
memory: 731112kb
input:
1 500000 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 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...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 500000 numbers
Test #16:
score: 0
Accepted
time: 416ms
memory: 731520kb
input:
1 500000 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 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...
output:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 500000 numbers
Test #17:
score: 0
Accepted
time: 55ms
memory: 3832kb
input:
100 100 794974775 319599082 534896702 531754666 188594127 850473183 123918434 373201410 225872804 613716798 968781728 301153078 825870015 884186067 176436571 186242378 945348477 268902499 377384194 741515217 603747317 191514668 970240757 395857046 362569599 184766332 969655538 859867689 631912620 44...
output:
1666573856 1443381594 1462481506 1410477119 1266079292 1471829922 1137785740 1186756776 1269304087 1647694236 1929356306 1722523937 1925223920 1851730842 1377824086 1328174516 1663248638 1411924364 1463208524 1680020655 1624570288 1475784090 1777617936 1512899615 1410845534 1470359822 1987904523 204...
result:
ok 6467 numbers
Test #18:
score: 0
Accepted
time: 14ms
memory: 3780kb
input:
100 47 169 607 144 992 214 4 217 742 702 199 403 933 295 143 990 337 204 988 792 969 233 215 922 528 821 386 40 877 141 243 504 797 928 714 685 81 821 752 689 896 541 270 227 947 388 632 143 100 637 262 990 971 34 350 433 62 485 709 215 980 971 787 567 243 25 913 451 773 130 400 796 450 830 401 157 ...
output:
1017 1243 1182 1495 1069 858 1069 1490 1543 1314 1444 1692 1387 1334 1734 1517 1554 2063 2122 2054 1559 1495 1856 1763 1759 1403 1169 1461 1169 1251 1595 1981 2162 2032 1848 1561 1933 2041 2042 2031 1692 1388 1373 1705 1469 1385 1046 1580 1577 1969 1860 1225 1153 1133 1031 1351 1620 1635 2146 2259 2...
result:
ok 6437 numbers
Test #19:
score: -100
Time Limit Exceeded
input:
1 500000 24841375 70408158 383749601 464340548 878516021 768949056 248134065 16161835 570858860 837034359 159517214 395243059 870018128 416856566 407199519 172196845 895527702 104605059 18516437 632654234 388463765 676004662 314539734 654303478 717140829 748002985 500557057 941392792 659256800 37790...