QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#388896 | #8549. The Game | ucup-team180# | AC ✓ | 197ms | 28308kb | C++17 | 35.0kb | 2024-04-13 21:15:29 | 2024-04-13 21:15:29 |
Judging History
answer
#pragma region Macros
#ifdef noimi
#pragma comment(linker, "/stack:256000000")
#include "my_template.hpp"
#else
// #pragma GCC target("avx2")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#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 <immintrin.h>
#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 <tuple>
#include <type_traits>
#include <utility>
#include <variant>
#ifdef noimi
#define oj_local(a, b) b
#else
#define oj_local(a, b) a
#endif
#define LOCAL if(oj_local(0, 1))
#define OJ if(oj_local(1, 0))
using namespace std;
using ll = long long;
using ull = unsigned long long int;
using i128 = __int128_t;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using ld = long double;
template <typename T> using vc = vector<T>;
template <typename T> using vvc = vector<vc<T>>;
template <typename T> using vvvc = vector<vvc<T>>;
using vi = vc<int>;
using vl = vc<ll>;
using vpi = vc<pii>;
using vpl = vc<pll>;
template <class T> using pq = priority_queue<T>;
template <class T> using pqg = priority_queue<T, vector<T>, greater<T>>;
template <typename T> int si(const T &x) { return x.size(); }
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); }
vi iota(int n) {
vi a(n);
return iota(a.begin(), a.end(), 0), a;
}
template <typename T> vi iota(const vector<T> &a, bool greater = false) {
vi res(a.size());
iota(res.begin(), res.end(), 0);
sort(res.begin(), res.end(), [&](int i, int j) {
if(greater) return a[i] > a[j];
return a[i] < a[j];
});
return res;
}
// macros
#define overload5(a, b, c, d, e, name, ...) name
#define overload4(a, b, c, d, name, ...) name
#define endl '\n'
#define REP0(n) for(ll jidlsjf = 0; jidlsjf < n; ++jidlsjf)
#define REP1(i, n) for(ll i = 0; i < (n); ++i)
#define REP2(i, a, b) for(ll i = (a); i < (b); ++i)
#define REP3(i, a, b, c) for(ll i = (a); i < (b); i += (c))
#define rep(...) overload4(__VA_ARGS__, REP3, REP2, REP1, REP0)(__VA_ARGS__)
#define per0(n) for(int jidlsjf = 0; jidlsjf < (n); ++jidlsjf)
#define per1(i, n) for(ll i = (n)-1; i >= 0; --i)
#define per2(i, a, b) for(ll i = (a)-1; i >= b; --i)
#define per3(i, a, b, c) for(ll i = (a)-1; i >= (b); i -= (c))
#define per(...) overload4(__VA_ARGS__, per3, per2, per1, per0)(__VA_ARGS__)
#define fore0(a) rep(a.size())
#define fore1(i, a) for(auto &&i : a)
#define fore2(a, b, v) for(auto &&[a, b] : v)
#define fore3(a, b, c, v) for(auto &&[a, b, c] : v)
#define fore4(a, b, c, d, v) for(auto &&[a, b, c, d] : v)
#define fore(...) overload5(__VA_ARGS__, fore4, fore3, fore2, fore1, fore0)(__VA_ARGS__)
#define setbits(j, n) for(ll iiiii = (n), j = lowbit(iiiii); iiiii; iiiii ^= 1 << j, j = lowbit(iiiii))
#define perm(v) for(bool permrepflag = true; (permrepflag ? exchange(permrepflag, false) : next_permutation(all(v)));)
#define fi first
#define se second
#define pb push_back
#define ppb pop_back
#define ppf pop_front
#define eb emplace_back
#define drop(s) cout << #s << endl, exit(0)
#define si(c) (int)(c).size()
#define lb(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define lbg(c, x) distance((c).begin(), lower_bound(all(c), (x), greater{}))
#define ub(c, x) distance((c).begin(), upper_bound(all(c), (x)))
#define ubg(c, x) distance((c).begin(), upper_bound(all(c), (x), greater{}))
#define rng(v, l, r) v.begin() + (l), v.begin() + (r)
#define all(c) begin(c), end(c)
#define rall(c) rbegin(c), rend(c)
#define SORT(v) sort(all(v))
#define REV(v) reverse(all(v))
#define UNIQUE(x) SORT(x), x.erase(unique(all(x)), x.end())
template <typename T = ll, typename S> T SUM(const S &v) { return accumulate(all(v), T(0)); }
#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define overload2(_1, _2, name, ...) name
#define vec(type, name, ...) vector<type> name(__VA_ARGS__)
#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__))))
constexpr pii dx4[4] = {pii{1, 0}, pii{0, 1}, pii{-1, 0}, pii{0, -1}};
constexpr pii dx8[8] = {{1, 0}, {1, 1}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};
namespace yesno_impl {
const string YESNO[2] = {"NO", "YES"};
const string YesNo[2] = {"No", "Yes"};
const string yesno[2] = {"no", "yes"};
const string firstsecond[2] = {"second", "first"};
const string FirstSecond[2] = {"Second", "First"};
const string possiblestr[2] = {"impossible", "possible"};
const string Possiblestr[2] = {"Impossible", "Possible"};
void YES(bool t = 1) { cout << YESNO[t] << endl; }
void NO(bool t = 1) { YES(!t); }
void Yes(bool t = 1) { cout << YesNo[t] << endl; }
void No(bool t = 1) { Yes(!t); }
void yes(bool t = 1) { cout << yesno[t] << endl; }
void no(bool t = 1) { yes(!t); }
void first(bool t = 1) { cout << firstsecond[t] << endl; }
void First(bool t = 1) { cout << FirstSecond[t] << endl; }
void possible(bool t = 1) { cout << possiblestr[t] << endl; }
void Possible(bool t = 1) { cout << Possiblestr[t] << endl; }
}; // namespace yesno_impl
using namespace yesno_impl;
#define INT(...) \
int __VA_ARGS__; \
IN(__VA_ARGS__)
#define INTd(...) \
int __VA_ARGS__; \
IN2(__VA_ARGS__)
#define LL(...) \
ll __VA_ARGS__; \
IN(__VA_ARGS__)
#define LLd(...) \
ll __VA_ARGS__; \
IN2(__VA_ARGS__)
#define STR(...) \
string __VA_ARGS__; \
IN(__VA_ARGS__)
#define CHR(...) \
char __VA_ARGS__; \
IN(__VA_ARGS__)
#define DBL(...) \
double __VA_ARGS__; \
IN(__VA_ARGS__)
#define VEC(type, name, size) \
vector<type> name(size); \
IN(name)
#define VECd(type, name, size) \
vector<type> name(size); \
IN2(name)
#define VEC2(type, name1, name2, size) \
vector<type> name1(size), name2(size); \
for(int i = 0; i < size; i++) IN(name1[i], name2[i])
#define VEC2d(type, name1, name2, size) \
vector<type> name1(size), name2(size); \
for(int i = 0; i < size; i++) IN2(name1[i], name2[i])
#define VEC3(type, name1, name2, name3, size) \
vector<type> name1(size), name2(size), name3(size); \
for(int i = 0; i < size; i++) IN(name1[i], name2[i], name3[i])
#define VEC3d(type, name1, name2, name3, size) \
vector<type> name1(size), name2(size), name3(size); \
for(int i = 0; i < size; i++) IN2(name1[i], name2[i], name3[i])
#define VEC4(type, name1, name2, name3, name4, size) \
vector<type> name1(size), name2(size), name3(size), name4(size); \
for(int i = 0; i < size; i++) IN(name1[i], name2[i], name3[i], name4[i]);
#define VEC4d(type, name1, name2, name3, name4, size) \
vector<type> name1(size), name2(size), name3(size), name4(size); \
for(int i = 0; i < size; i++) IN2(name1[i], name2[i], name3[i], name4[i]);
#define VV(type, name, h, w) \
vector<vector<type>> name(h, vector<type>(w)); \
IN(name)
#define VVd(type, name, h, w) \
vector<vector<type>> name(h, vector<type>(w)); \
IN2(name)
int scan() { return getchar(); }
void scan(int &a) { cin >> a; }
void scan(long long &a) { cin >> a; }
void scan(char &a) { cin >> a; }
void scan(double &a) { cin >> a; }
void scan(string &a) { cin >> a; }
template <class T, class S> void scan(pair<T, S> &p) { scan(p.first), scan(p.second); }
template <class T> void scan(vector<T> &);
template <class T> void scan(vector<T> &a) {
for(auto &i : a) scan(i);
}
template <class T> void scan(T &a) { cin >> a; }
void IN() {}
void IN2() {}
template <class Head, class... Tail> void IN(Head &head, Tail &...tail) {
scan(head);
IN(tail...);
}
template <class Head, class... Tail> void IN2(Head &head, Tail &...tail) {
scan(head);
--head;
IN2(tail...);
}
template <int p = -1> void pat() {}
template <int p = -1, class Head, class... Tail> void pat(Head &h, Tail &...tail) {
h += p;
pat<p>(tail...);
}
template <typename T, typename S> T ceil(T x, S y) {
assert(y);
return (y < 0 ? ceil(-x, -y) : (x > 0 ? (x + y - 1) / y : x / y));
}
template <typename T, typename S> T floor(T x, S y) {
assert(y);
return (y < 0 ? floor(-x, -y) : (x > 0 ? x / y : x / y - (x % y == 0 ? 0 : 1)));
}
template <typename T, typename S, typename U> U bigmul(const T &x, const S &y, const U &lim) { // clamp(x * y, -lim, lim)
if(x < 0 and y < 0) return bigmul(-x, -y, lim);
if(x < 0) return -bigmul(-x, y, lim);
if(y < 0) return -bigmul(x, -y, lim);
return y == 0 or x <= lim / y ? x * y : lim;
}
template <class T> T POW(T x, int n) {
T res = 1;
for(; n; n >>= 1, x *= x)
if(n & 1) res *= x;
return res;
}
template <class T, class S> T POW(T x, S n, const ll &mod) {
T res = 1;
x %= mod;
for(; n; n >>= 1, x = x * x % mod)
if(n & 1) res = res * x % mod;
return res;
}
vector<pll> factor(ll x) {
vector<pll> ans;
for(ll i = 2; i * i <= x; i++)
if(x % i == 0) {
ans.push_back({i, 1});
while((x /= i) % i == 0) ans.back().second++;
}
if(x != 1) ans.push_back({x, 1});
return ans;
}
template <class T> vector<T> divisor(T x) {
vector<T> ans;
for(T i = 1; i * i <= x; i++)
if(x % i == 0) {
ans.pb(i);
if(i * i != x) ans.pb(x / i);
}
return ans;
}
template <typename T> void zip(vector<T> &x) {
vector<T> y = x;
UNIQUE(y);
for(int i = 0; i < x.size(); ++i) { x[i] = lb(y, x[i]); }
}
template <class S> void fold_in(vector<S> &v) {}
template <typename Head, typename... Tail, class S> void fold_in(vector<S> &v, Head &&a, Tail &&...tail) {
for(auto e : a) v.emplace_back(e);
fold_in(v, tail...);
}
template <class S> void renumber(vector<S> &v) {}
template <typename Head, typename... Tail, class S> void renumber(vector<S> &v, Head &&a, Tail &&...tail) {
for(auto &&e : a) e = lb(v, e);
renumber(v, tail...);
}
template <class S, class... Args> vector<S> zip(vector<S> &head, Args &&...args) {
vector<S> v;
fold_in(v, head, args...);
sort(all(v)), v.erase(unique(all(v)), v.end());
renumber(v, head, args...);
return v;
}
template <typename S> void rearrange(const vector<S> &id) {}
template <typename S, typename T> void rearrange_exec(const vector<S> &id, vector<T> &v) {
vector<T> w(v.size());
rep(i, si(id)) w[i] = v[id[i]];
v.swap(w);
}
// 並び替える順番, 並び替える vector 達
template <typename S, typename Head, typename... Tail> void rearrange(const vector<S> &id, Head &a, Tail &...tail) {
rearrange_exec(id, a);
rearrange(id, tail...);
}
template <typename T> vector<T> RUI(const vector<T> &v) {
vector<T> res(v.size() + 1);
for(int i = 0; i < v.size(); i++) res[i + 1] = res[i] + v[i];
return res;
}
template <typename T> void zeta_supersetsum(vector<T> &f) {
int n = f.size();
for(int i = 1; i < n; i <<= 1) rep(b, n) if(!(i & b)) f[b] += f[b | i];
}
template <typename T> void zeta_subsetsum(vector<T> &f) {
int n = f.size();
for(int i = 1; i < n; i <<= 1) rep(b, n) if(!(i & b)) f[b | i] += f[b];
}
template <typename T> void mobius_subset(vector<T> &f) {
int n = f.size();
for(int i = 1; i < n; i <<= 1) rep(b, n) if(!(i & b)) f[b] -= f[b | i];
}
template <typename T> void mobius_superset(vector<T> &f) {
int n = f.size();
for(int i = 1; i < n; i <<= 1) rep(b, n) if(!(i & b)) f[b | i] -= f[b];
}
// 反時計周りに 90 度回転
template <typename T> void rot(vector<vector<T>> &v) {
if(empty(v)) return;
int n = v.size(), m = v[0].size();
vector<vector<T>> res(m, vector<T>(n));
rep(i, n) rep(j, m) res[m - 1 - j][i] = v[i][j];
v.swap(res);
}
vector<int> counter(const vector<int> &v, int max_num = -1) {
if(max_num == -1) max_num = MAX(v);
vector<int> res(max_num + 1);
fore(e, v) res[e]++;
return res;
}
// x in [l, r)
template <class T, class S> bool inc(const T &x, const S &l, const S &r) { return l <= x and x < r; }
template <class T, class S> bool inc(const T &x, const pair<S, S> &p) { return p.first <= x and x < p.second; }
// 便利関数
constexpr ll ten(int n) { return n == 0 ? 1 : ten(n - 1) * 10; }
constexpr ll tri(ll n) { return n * (n + 1) / 2; }
// l + ... + r
constexpr ll tri(ll l, ll r) { return (l + r) * (r - l + 1) / 2; }
ll max(int x, ll y) { return max((ll)x, y); }
ll max(ll x, int y) { return max(x, (ll)y); }
int min(int x, ll y) { return min((ll)x, y); }
int min(ll x, int y) { return min(x, (ll)y); }
// bit 演算系
#define bit(i) (1LL << i) // (1 << i)
#define test(b, i) (b >> i & 1) // b の i bit 目が立っているか
ll pow2(int i) { return 1LL << i; }
int topbit(signed t) { return t == 0 ? -1 : 31 - __builtin_clz(t); }
int topbit(ll t) { return t == 0 ? -1 : 63 - __builtin_clzll(t); }
// int lowbit(signed a) { return a == 0 ? 32 : __builtin_ctz(a); }
int lowbit(ull a) { return a == 0 ? 64 : __builtin_ctzll(a); }
// int allbit(int n) { return (1 << n) - 1; }
constexpr ll mask(int n) { return (1LL << n) - 1; }
// int popcount(signed t) { return __builtin_popcount(t); }
// int popcount(ll t) { return __builtin_popcountll(t); }
int popcount(uint64_t t) { return __builtin_popcountll(t); }
static inline uint64_t popcount64(uint64_t x) {
uint64_t m1 = 0x5555555555555555ll;
uint64_t m2 = 0x3333333333333333ll;
uint64_t m4 = 0x0F0F0F0F0F0F0F0Fll;
uint64_t h01 = 0x0101010101010101ll;
x -= (x >> 1) & m1;
x = (x & m2) + ((x >> 2) & m2);
x = (x + (x >> 4)) & m4;
return (x * h01) >> 56;
}
bool ispow2(int i) { return i && (i & -i) == i; }
ll rnd(ll l, ll r) { //[l, r)
#ifdef noimi
static mt19937_64 gen;
#else
static mt19937_64 gen(chrono::steady_clock::now().time_since_epoch().count());
#endif
return uniform_int_distribution<ll>(l, r - 1)(gen);
}
ll rnd(ll n) { return rnd(0, n); }
template <class t> void random_shuffle(vc<t> &a) { rep(i, si(a)) swap(a[i], a[rnd(0, i + 1)]); }
int in() {
int x;
cin >> x;
return x;
}
ll lin() {
unsigned long long x;
cin >> x;
return x;
}
template <class T, class S> pair<T, S> operator-(const pair<T, S> &x) { return pair<T, S>(-x.first, -x.second); }
template <class T, class S> pair<T, S> operator-(const pair<T, S> &x, const pair<T, S> &y) { return pair<T, S>(x.fi - y.fi, x.se - y.se); }
template <class T, class S> pair<T, S> operator+(const pair<T, S> &x, const pair<T, S> &y) { return pair<T, S>(x.fi + y.fi, x.se + y.se); }
template <class T> pair<T, T> operator&(const pair<T, T> &l, const pair<T, T> &r) { return pair<T, T>(max(l.fi, r.fi), min(l.se, r.se)); }
template <class T, class S> pair<T, S> operator+=(pair<T, S> &l, const pair<T, S> &r) { return l = l + r; }
template <class T, class S> pair<T, S> operator-=(pair<T, S> &l, const pair<T, S> &r) { return l = l - r; }
template <class T> bool intersect(const pair<T, T> &l, const pair<T, T> &r) { return (l.se < r.se ? r.fi < l.se : l.fi < r.se); }
template <class T> vector<T> &operator++(vector<T> &v) {
fore(e, v) e++;
return v;
}
template <class T> vector<T> operator++(vector<T> &v, int) {
auto res = v;
fore(e, v) e++;
return res;
}
template <class T> vector<T> &operator--(vector<T> &v) {
fore(e, v) e--;
return v;
}
template <class T> vector<T> operator--(vector<T> &v, int) {
auto res = v;
fore(e, v) e--;
return res;
}
template <class T> void connect(vector<T> &l, const vector<T> &r) { fore(e, r) l.eb(e); }
template <class T> vector<T> operator+(const vector<T> &l, const vector<T> &r) {
vector<T> res(max(si(l), si(r)));
rep(i, si(l)) res[i] += l[i];
rep(i, si(r)) res[i] += r[i];
return res;
}
template <class T> vector<T> operator-(const vector<T> &l, const vector<T> &r) {
vector<T> res(max(si(l), si(r)));
rep(i, si(l)) res[i] += l[i];
rep(i, si(r)) res[i] -= r[i];
return res;
}
template <class T> vector<T> &operator+=(const vector<T> &l, const vector<T> &r) {
if(si(l) < si(r)) l.resize(si(r));
rep(i, si(r)) l[i] += r[i];
return l;
}
template <class T> vector<T> &operator-=(const vector<T> &l, const vector<T> &r) {
if(si(l) < si(r)) l.resize(si(r));
rep(i, si(r)) l[i] -= r[i];
return l;
}
template <class T> vector<T> &operator+=(vector<T> &v, const T &x) {
fore(e, v) e += x;
return v;
}
template <class T> vector<T> &operator-=(vector<T> &v, const T &x) {
fore(e, v) e -= x;
return v;
}
template <typename T> struct edge {
int from, to;
T cost;
int id;
edge(int to, T cost) : from(-1), to(to), cost(cost) {}
edge(int from, int to, T cost) : from(from), to(to), cost(cost) {}
edge(int from, int to, T cost, int id) : from(from), to(to), cost(cost), id(id) {}
constexpr bool operator<(const edge<T> &rhs) const noexcept { return cost < rhs.cost; }
edge &operator=(const int &x) {
to = x;
return *this;
}
operator int() const { return to; }
friend ostream operator<<(ostream &os, const edge &e) { return os << e.to; }
};
template <typename T> using Edges = vector<edge<T>>;
template <typename T = int> Edges<T> read_edges(int m, bool weighted = false) {
Edges<T> res;
res.reserve(m);
for(int i = 0; i < m; i++) {
int u, v, c = 0;
scan(u), scan(v), u--, v--;
if(weighted) scan(c);
res.eb(u, v, c, i);
}
return res;
}
using Tree = vector<vector<int>>;
using Graph = vector<vector<int>>;
template <class T> using Wgraph = vector<vector<edge<T>>>;
Graph getG(int n, int m = -1, bool directed = false, int margin = 1) {
Tree res(n);
if(m == -1) m = n - 1;
while(m--) {
int a, b;
cin >> a >> b;
a -= margin, b -= margin;
res[a].emplace_back(b);
if(!directed) res[b].emplace_back(a);
}
return res;
}
Graph getTreeFromPar(int n, int margin = 1) {
Graph res(n);
for(int i = 1; i < n; i++) {
int a;
cin >> a;
res[a - margin].emplace_back(i);
}
return res;
}
template <class T> Wgraph<T> getWg(int n, int m = -1, bool directed = false, int margin = 1) {
Wgraph<T> res(n);
if(m == -1) m = n - 1;
while(m--) {
int a, b;
T c;
scan(a), scan(b), scan(c);
a -= margin, b -= margin;
res[a].emplace_back(b, c);
if(!directed) res[b].emplace_back(a, c);
}
return res;
}
void add(Graph &G, int x, int y) { G[x].eb(y), G[y].eb(x); }
template <class S, class T> void add(Wgraph<S> &G, int x, int y, T c) { G[x].eb(y, c), G[y].eb(x, c); }
#define TEST \
INT(testcases); \
while(testcases--)
i128 abs(const i128 &x) { return x > 0 ? x : -x; }
istream &operator>>(istream &is, i128 &v) {
string s;
is >> s;
v = 0;
for(int i = 0; i < (int)s.size(); i++) {
if(isdigit(s[i])) { v = v * 10 + s[i] - '0'; }
}
if(s[0] == '-') { v *= -1; }
return is;
}
ostream &operator<<(ostream &os, const i128 &v) {
if(v == 0) { return (os << "0"); }
i128 num = v;
if(v < 0) {
os << '-';
num = -num;
}
string s;
for(; num > 0; num /= 10) { s.push_back((char)(num % 10) + '0'); }
reverse(s.begin(), s.end());
return (os << s);
}
namespace aux {
template <typename T, unsigned N, unsigned L> struct tp {
static void output(std::ostream &os, const T &v) {
os << std::get<N>(v) << (&os == &cerr ? ", " : " ");
tp<T, N + 1, L>::output(os, v);
}
};
template <typename T, unsigned N> struct tp<T, N, N> {
static void output(std::ostream &os, const T &v) { os << std::get<N>(v); }
};
} // namespace aux
template <typename... Ts> std::ostream &operator<<(std::ostream &os, const std::tuple<Ts...> &t) {
if(&os == &cerr) { os << '('; }
aux::tp<std::tuple<Ts...>, 0, sizeof...(Ts) - 1>::output(os, t);
if(&os == &cerr) { os << ')'; }
return os;
}
template <typename T, typename S, typename U> std::ostream &operator<<(std::ostream &os, const priority_queue<T, S, U> &_pq) {
auto pq = _pq;
vector<T> res;
while(!empty(pq)) res.emplace_back(pq.top()), pq.pop();
return os << res;
}
template <class T, class S> ostream &operator<<(ostream &os, const pair<T, S> &p) {
if(&os == &cerr) { return os << "(" << p.first << ", " << p.second << ")"; }
return os << p.first << " " << p.second;
}
template <class Ch, class Tr, class Container> std::basic_ostream<Ch, Tr> &operator<<(std::basic_ostream<Ch, Tr> &os, const Container &x) {
bool f = true;
if(&os == &cerr) os << "[";
for(auto &y : x) {
if(&os == &cerr)
os << (f ? "" : ", ") << y;
else
os << (f ? "" : " ") << y;
f = false;
}
if(&os == &cerr) os << "]";
return os;
}
#define dump(...) static_cast<void>(0)
#define dbg(...) static_cast<void>(0)
void OUT() { cout << endl; }
template <class Head, class... Tail> void OUT(const Head &head, const Tail &...tail) {
cout << head;
if(sizeof...(tail)) cout << ' ';
OUT(tail...);
}
template <typename T> static constexpr T inf = numeric_limits<T>::max() / 2;
template <class T, class S> constexpr pair<T, S> inf<pair<T, S>> = {inf<T>, inf<S>};
template <class T> void OUT2(const T &t, T INF = inf<T>, T res = -1) { OUT(t != INF ? t : res); }
template <class T> void OUT2(vector<T> &v, T INF = inf<T>, T res = -1) {
fore(e, v) if(e == INF) e = res;
OUT(v);
fore(e, v) if(e == res) e = INF;
}
template <class F> struct REC {
F f;
REC(F &&f_) : f(forward<F>(f_)) {}
template <class... Args> auto operator()(Args &&...args) const { return f(*this, forward<Args>(args)...); }
};
template <class S> vector<pair<S, int>> runLength(const vector<S> &v) {
vector<pair<S, int>> res;
for(auto &e : v) {
if(res.empty() or res.back().fi != e)
res.eb(e, 1);
else
res.back().se++;
}
return res;
}
vector<pair<char, int>> runLength(const string &v) {
vector<pair<char, int>> res;
for(auto &e : v) {
if(res.empty() or res.back().fi != e)
res.eb(e, 1);
else
res.back().se++;
}
return res;
}
struct string_converter {
char start = 0;
char type(const char &c) const { return (islower(c) ? 'a' : isupper(c) ? 'A' : isdigit(c) ? '0' : 0); }
int convert(const char &c) {
if(!start) start = type(c);
return c - start;
}
int convert(const char &c, const string &chars) { return chars.find(c); }
template <typename T> auto convert(const T &v) {
vector<decltype(convert(v[0]))> ret;
ret.reserve(size(v));
for(auto &&e : v) ret.emplace_back(convert(e));
return ret;
}
template <typename T> auto convert(const T &v, const string &chars) {
vector<decltype(convert(v[0], chars))> ret;
ret.reserve(size(v));
for(auto &&e : v) ret.emplace_back(convert(e, chars));
return ret;
}
int operator()(const char &v, char s = 0) {
start = s;
return convert(v);
}
int operator()(const char &v, const string &chars) { return convert(v, chars); }
template <typename T> auto operator()(const T &v, char s = 0) {
start = s;
return convert(v);
}
template <typename T> auto operator()(const T &v, const string &chars) { return convert(v, chars); }
} toint;
template <class T, class F> T bin_search(T ok, T ng, const F &f) {
while(abs(ok - ng) > 1) {
T mid = ok + ng >> 1;
(f(mid) ? ok : ng) = mid;
}
return ok;
}
template <class T, class F> T bin_search_double(T ok, T ng, const F &f, int iter = 80) {
while(iter--) {
T mid = (ok + ng) / 2;
(f(mid) ? ok : ng) = mid;
}
return ok;
}
struct Setup_io {
Setup_io() {
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cout << fixed << setprecision(11);
}
} setup_io;
#endif
#pragma endregion
#ifndef SUISEN_DOUBLE_ENDED_PRIORITY_QUEUE
#define SUISEN_DOUBLE_ENDED_PRIORITY_QUEUE
#include <algorithm>
#include <cassert>
#include <functional>
#include <utility>
#include <vector>
namespace suisen {
template <typename T, typename Comp = std::less<T>> struct DoubleEndedPriorityQueue {
using value_type = T;
using compare_type = Comp;
DoubleEndedPriorityQueue() = default;
DoubleEndedPriorityQueue(const Comp &comp) : _comp(comp) {}
template <typename InputIterator> DoubleEndedPriorityQueue(InputIterator first, InputIterator last) : _max_heap(first, last) {
std::make_heap(_max_heap.begin(), _max_heap.end(), _comp);
}
template <typename InputIterator>
DoubleEndedPriorityQueue(InputIterator first, InputIterator last, const Comp &comp) : _comp(comp), _max_heap(first, last) {
std::make_heap(_max_heap.begin(), _max_heap.end(), _comp);
}
template <typename Iterable, typename = std::void_t<typename Iterable::iterator>>
DoubleEndedPriorityQueue(const Iterable &dat) : DoubleEndedPriorityQueue(dat.begin(), dat.end()) {}
template <typename Iterable, typename = std::void_t<typename Iterable::iterator>>
DoubleEndedPriorityQueue(const Iterable &dat, Comp &comp) : DoubleEndedPriorityQueue(dat.begin(), dat.end(), comp) {}
bool empty() const { return size() == 0; }
int size() const { return _min_heap.size() + _max_heap.size(); }
void push(const value_type &v) {
if(_min_heap.empty() or _comp(pivot, v)) {
_max_heap.push_back(v);
std::push_heap(_max_heap.begin(), _max_heap.end(), _comp);
} else {
_min_heap.push_back(v);
std::push_heap(_min_heap.begin(), _min_heap.end(), _rev_comp);
}
}
template <typename... Args> void emplace(Args &&...args) { push(value_type(std::forward<Args>(args)...)); }
const value_type &max() const {
assert(size());
return _max_heap.size() ? _max_heap.front() : pivot;
}
const value_type &min() {
ensure_min_heap_nonempty();
return _min_heap.front();
}
const value_type &top() const { return max(); }
value_type pop_max() {
ensure_max_heap_nonempty();
std::pop_heap(_max_heap.begin(), _max_heap.end(), _comp);
value_type res = std::move(_max_heap.back());
_max_heap.pop_back();
return res;
}
value_type pop_min() {
ensure_min_heap_nonempty();
std::pop_heap(_min_heap.begin(), _min_heap.end(), _rev_comp);
value_type res = std::move(_min_heap.back());
_min_heap.pop_back();
return res;
}
value_type pop() { return pop_max(); }
std::vector<value_type> dump_sorted() const {
std::vector<value_type> res_l(_min_heap), res_r(_max_heap);
std::sort(res_l.begin(), res_l.end(), _comp);
std::sort(res_r.begin(), res_r.end(), _comp);
res_l.reserve(size());
std::copy(res_r.begin(), res_r.end(), std::back_inserter(res_l));
return res_l;
}
private:
compare_type _comp;
struct {
compare_type *comp;
bool operator()(const value_type &x, const value_type &y) { return (*comp)(y, x); }
} _rev_comp{&_comp};
std::vector<value_type> _max_heap, _min_heap;
value_type pivot;
void ensure_min_heap_nonempty() {
const int siz = size();
assert(siz);
if(not _min_heap.empty()) return;
if(siz == 1) {
std::swap(_min_heap, _max_heap);
pivot = _min_heap.front();
} else {
const int mid = (siz + 1) >> 1;
std::nth_element(_max_heap.begin(), _max_heap.begin() + mid - 1, _max_heap.end(), _comp);
pivot = _max_heap[mid - 1];
_min_heap.reserve(mid);
std::move(_max_heap.begin(), _max_heap.begin() + mid, std::back_inserter(_min_heap));
_max_heap.erase(_max_heap.begin(), _max_heap.begin() + mid);
std::make_heap(_max_heap.begin(), _max_heap.end(), _comp);
std::make_heap(_min_heap.begin(), _min_heap.end(), _rev_comp);
}
}
void ensure_max_heap_nonempty() {
const int siz = size();
assert(siz);
if(not _max_heap.empty()) return;
if(siz == 1) {
std::swap(_min_heap, _max_heap);
} else {
const int mid = siz >> 1;
std::nth_element(_min_heap.begin(), _min_heap.begin() + mid - 1, _min_heap.end(), _comp);
pivot = _min_heap[mid - 1];
_max_heap.reserve(siz - mid);
std::move(_min_heap.begin() + mid, _min_heap.end(), std::back_inserter(_max_heap));
_min_heap.erase(_min_heap.begin() + mid, _min_heap.end());
std::make_heap(_max_heap.begin(), _max_heap.end(), _comp);
std::make_heap(_min_heap.begin(), _min_heap.end(), _rev_comp);
}
}
};
} // namespace suisen
#endif // SUISEN_DOUBLE_ENDED_PRIORITY_QUEUE
int main() {
TEST {
INT(n);
VEC(int, a, n * 2);
vi v(n * 2);
--a;
fore(e, a) v[e]++;
suisen::DoubleEndedPriorityQueue<int> pq;
fore(e, v) if(e) pq.emplace(e);
rep(i, n * 2 - 2) {
if(i & 1) {
int x = pq.pop_min();
if(x > 1) pq.emplace(--x);
} else {
int x = pq.pop_max();
if(x > 1) pq.emplace(--x);
}
}
OUT(si(pq) == 1 ? "Qingyu" : "Kevin");
}
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3848kb
input:
3 3 1 1 4 5 1 4 2 1 2 3 4 4 1 2 2 3 2 1 1 4
output:
Qingyu Kevin Qingyu
result:
ok 3 tokens
Test #2:
score: 0
Accepted
time: 5ms
memory: 3624kb
input:
10000 3 5 5 3 5 4 5 3 1 4 3 1 1 3 3 1 6 3 3 4 4 3 3 4 1 3 1 1 3 5 6 6 3 1 3 3 4 5 1 5 6 5 3 6 2 4 4 6 1 3 4 6 4 4 2 4 3 6 4 1 6 4 6 3 2 4 6 4 2 3 3 2 4 1 5 5 4 3 1 3 6 5 1 1 3 3 2 1 5 3 1 3 6 6 6 2 2 5 3 1 5 2 5 3 3 3 1 3 3 5 4 5 3 1 3 4 2 4 5 3 3 5 6 2 2 2 3 4 3 3 1 2 6 3 3 3 3 3 6 3 3 4 1 3 6 6 4 ...
output:
Qingyu Qingyu Kevin Qingyu Kevin Kevin Kevin Qingyu Qingyu Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Qingy...
result:
ok 10000 tokens
Test #3:
score: 0
Accepted
time: 6ms
memory: 3696kb
input:
10000 4 5 7 5 4 2 3 8 2 4 5 3 3 7 7 1 2 6 4 7 4 5 1 5 6 6 4 4 8 7 7 8 1 7 2 2 4 6 7 7 1 8 1 1 3 4 5 4 1 8 6 1 2 6 4 2 8 3 4 2 4 8 7 4 3 3 1 7 7 7 2 3 4 4 7 2 1 3 7 4 7 4 2 3 8 5 3 8 3 8 4 3 4 3 1 3 1 4 4 4 3 6 5 2 2 6 4 7 4 7 6 6 4 3 3 8 6 4 5 2 1 5 4 7 5 6 4 1 7 3 2 2 5 8 5 4 8 8 3 7 2 3 6 6 4 7 5 ...
output:
Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin Qingyu Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevi...
result:
ok 10000 tokens
Test #4:
score: 0
Accepted
time: 7ms
memory: 3852kb
input:
10000 5 9 7 9 8 5 2 1 4 4 6 5 9 7 9 9 3 3 9 3 5 8 5 10 8 10 4 5 3 10 1 7 2 5 4 4 3 2 1 5 1 6 9 4 5 7 10 10 9 7 5 9 8 10 1 5 3 9 1 2 4 1 4 2 9 8 5 8 2 3 6 5 5 3 9 4 7 5 7 3 5 7 2 9 1 7 6 6 5 3 2 5 3 10 3 7 7 10 7 5 9 2 3 3 7 9 5 4 6 6 5 8 9 5 1 9 8 6 10 7 10 5 4 7 9 3 5 3 2 4 5 4 5 5 4 2 3 2 1 1 6 2 ...
output:
Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Ke...
result:
ok 10000 tokens
Test #5:
score: 0
Accepted
time: 14ms
memory: 3720kb
input:
10000 10 13 17 8 6 6 4 12 17 10 15 16 6 16 18 8 9 13 6 15 18 10 3 14 10 14 11 5 3 14 11 10 18 2 17 7 3 3 17 6 10 14 10 7 19 2 3 19 20 7 2 19 4 8 5 13 12 17 20 18 5 2 16 10 5 8 2 1 13 4 5 16 14 12 10 10 17 6 10 18 15 10 15 11 10 15 8 18 16 5 14 17 6 3 12 6 5 15 13 3 3 19 13 15 20 10 20 9 7 17 16 13 2...
output:
Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kev...
result:
ok 10000 tokens
Test #6:
score: 0
Accepted
time: 140ms
memory: 3892kb
input:
10000 100 177 134 53 64 138 66 17 184 182 29 143 189 179 18 182 163 107 24 146 65 194 128 24 164 177 104 142 171 166 82 112 4 122 37 92 6 1 107 72 85 62 194 14 90 100 107 79 104 86 150 21 184 144 68 127 182 155 3 153 121 125 38 9 15 71 139 171 39 37 147 70 69 169 109 53 57 193 43 71 168 133 51 104 7...
output:
Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin ...
result:
ok 10000 tokens
Test #7:
score: 0
Accepted
time: 153ms
memory: 3660kb
input:
1000 1000 1664 1262 183 77 952 763 492 1285 1781 273 1173 1289 995 349 1932 1765 519 1621 237 148 1863 1263 1208 554 1645 679 1714 1259 392 1325 884 1953 1146 980 1883 1865 1147 1269 134 214 1748 1402 204 1949 1878 1875 1187 1320 1761 1988 730 1971 1661 1045 496 1298 676 545 1466 1849 1509 1655 1569...
output:
Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin ...
result:
ok 1000 tokens
Test #8:
score: 0
Accepted
time: 163ms
memory: 3928kb
input:
100 10000 18109 10379 4922 10249 14298 6729 11419 15620 8466 7000 17204 9992 17944 12008 6330 11510 9537 14027 17699 18739 19752 2937 4461 2600 4747 5710 8888 6562 1004 13927 15174 2578 4337 18313 706 1389 5700 8858 8022 7981 3155 1222 10291 3150 8817 13755 19373 13010 9491 7661 16733 4254 7317 1043...
output:
Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin ...
result:
ok 100 tokens
Test #9:
score: 0
Accepted
time: 175ms
memory: 6052kb
input:
10 100000 86829 106117 108534 172063 102996 78412 162911 75419 172718 148734 135592 46009 106075 28053 182924 95323 110734 198718 83479 191704 198287 47321 86251 102075 137722 189882 31679 17987 173247 13099 34523 3810 77984 154600 43165 56831 22069 154017 54455 56564 172459 6011 112558 66128 5889 6...
output:
Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin Kevin
result:
ok 10 tokens
Test #10:
score: 0
Accepted
time: 197ms
memory: 28308kb
input:
1 1000000 1327947 342344 921602 1100113 423665 1645931 909055 100809 147445 1080765 1420296 1348957 762517 1508451 1066670 592341 1901140 5477 1135366 22297 27258 1709870 1424297 1909178 660753 455056 1125686 387303 927849 1122877 1402444 1675000 1062804 418127 124688 58087 1575147 1292608 1490221 1...
output:
Kevin
result:
ok "Kevin"
Test #11:
score: 0
Accepted
time: 5ms
memory: 3684kb
input:
10000 3 2 3 2 1 2 1 3 1 1 3 3 1 4 3 4 4 2 5 5 2 3 1 1 2 3 3 3 3 3 1 2 1 2 3 3 3 2 1 1 3 1 3 6 4 4 2 4 6 3 1 4 4 4 4 4 3 4 2 3 2 4 1 3 2 1 1 3 3 2 3 5 1 5 5 4 4 3 3 3 3 2 2 2 3 2 2 2 3 3 1 3 3 2 1 2 1 3 3 2 4 5 3 5 6 3 2 2 4 3 3 1 3 6 3 3 3 3 6 3 1 1 3 3 3 1 3 3 1 2 3 1 1 3 4 2 4 1 1 6 3 1 2 2 3 3 1 ...
output:
Qingyu Qingyu Qingyu Qingyu Qingyu Qingyu Qingyu Qingyu Kevin Qingyu Qingyu Qingyu Qingyu Qingyu Kevin Kevin Qingyu Qingyu Qingyu Kevin Qingyu Kevin Kevin Kevin Qingyu Qingyu Qingyu Qingyu Qingyu Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Qingyu Kevin Kevin Qingyu Qingyu Kevin Kevin Kevin Qin...
result:
ok 10000 tokens
Test #12:
score: 0
Accepted
time: 7ms
memory: 3656kb
input:
10000 4 7 5 4 2 3 8 2 5 4 3 3 5 5 2 6 5 2 4 4 1 5 5 4 3 5 4 4 1 3 2 2 2 3 3 1 4 5 2 3 5 3 3 5 3 4 2 2 2 4 3 4 2 4 4 3 3 1 1 3 5 4 3 4 7 3 4 7 2 5 7 5 4 3 4 1 3 4 3 4 3 4 3 1 3 1 4 4 3 2 4 6 1 1 5 5 1 7 4 4 3 3 8 6 5 2 1 5 4 4 2 2 2 5 3 2 2 4 4 1 4 4 3 3 2 3 4 2 3 1 3 2 1 3 1 4 4 8 3 8 3 4 8 7 4 1 2 ...
output:
Kevin Qingyu Qingyu Qingyu Qingyu Qingyu Qingyu Kevin Qingyu Qingyu Kevin Kevin Qingyu Qingyu Qingyu Qingyu Qingyu Kevin Kevin Kevin Qingyu Kevin Qingyu Qingyu Qingyu Qingyu Kevin Kevin Qingyu Qingyu Kevin Kevin Qingyu Kevin Qingyu Qingyu Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Qingyu Qing...
result:
ok 10000 tokens
Test #13:
score: 0
Accepted
time: 7ms
memory: 3684kb
input:
10000 5 1 7 5 4 4 2 1 2 6 3 5 7 7 3 7 1 2 5 2 6 7 5 4 5 3 10 1 7 2 4 4 3 5 1 5 1 6 9 4 7 10 10 9 5 5 4 3 5 1 3 4 1 2 4 5 4 2 1 1 1 7 1 6 1 4 5 2 7 7 1 6 3 4 3 7 2 5 1 1 3 2 5 3 5 3 2 2 5 1 7 6 1 3 1 5 3 2 4 5 6 5 1 1 1 2 6 2 3 6 5 1 1 3 3 1 4 6 3 2 1 5 2 3 2 1 1 6 2 7 5 8 5 7 6 4 7 7 3 7 5 9 8 5 6 1...
output:
Kevin Kevin Kevin Kevin Qingyu Qingyu Kevin Qingyu Kevin Qingyu Qingyu Kevin Kevin Kevin Qingyu Qingyu Kevin Qingyu Qingyu Qingyu Kevin Kevin Kevin Qingyu Qingyu Qingyu Kevin Qingyu Qingyu Qingyu Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Qingyu Qingyu Qingyu Kevin Kevin Kevin Kevin Kevin Kev...
result:
ok 10000 tokens
Test #14:
score: 0
Accepted
time: 14ms
memory: 3620kb
input:
10000 10 4 3 7 8 7 8 9 4 10 6 3 11 11 7 4 6 11 4 3 1 10 5 14 6 15 8 9 1 5 13 12 7 2 13 3 12 11 10 9 12 9 10 11 3 8 7 14 3 12 4 13 5 4 9 8 10 13 2 4 9 4 14 10 11 1 2 12 2 13 2 13 7 1 2 6 13 12 13 2 12 6 11 2 10 4 7 6 3 2 6 5 5 3 3 3 9 3 5 10 10 9 7 7 6 10 8 1 5 12 2 1 9 13 7 12 5 2 1 14 13 8 9 2 7 11...
output:
Qingyu Kevin Kevin Qingyu Qingyu Qingyu Kevin Qingyu Qingyu Kevin Qingyu Qingyu Kevin Qingyu Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Qingyu Qingyu Kevin Kevin Qingyu Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu ...
result:
ok 10000 tokens
Test #15:
score: 0
Accepted
time: 146ms
memory: 3640kb
input:
10000 100 62 29 128 114 178 89 96 110 21 111 117 131 170 126 3 35 24 42 177 2 104 152 12 89 72 182 3 166 74 112 44 42 37 188 62 41 115 80 149 174 50 166 50 132 3 191 56 126 174 29 48 176 92 7 134 179 91 137 73 101 30 177 47 167 59 19 143 29 107 134 101 177 77 101 81 17 35 143 88 109 19 40 162 122 10...
output:
Kevin Qingyu Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Qingyu Kevin Kevin Qingyu Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin ...
result:
ok 10000 tokens
Test #16:
score: 0
Accepted
time: 152ms
memory: 3952kb
input:
1000 1000 502 473 297 502 1043 962 855 1101 1313 1393 1329 1655 459 312 215 1289 701 1137 998 1223 1503 368 164 615 1059 1524 229 1402 595 524 323 1006 1650 463 265 67 79 14 1514 1628 1582 234 879 938 165 717 540 1511 198 1210 1201 451 1585 736 1528 596 835 946 989 659 925 619 58 283 238 835 823 106...
output:
Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Qingyu Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Qingyu Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Qingyu Kevin Kevin Kevin Kevin Qingyu Kevin Qingyu Qingyu Kevin Kevin Qing...
result:
ok 1000 tokens
Test #17:
score: 0
Accepted
time: 154ms
memory: 4188kb
input:
100 10000 3355 12778 2953 8778 9353 11339 6612 4578 11304 180 10824 10600 6408 698 2470 5089 10523 13315 5779 6264 1929 13533 2440 11 13886 2536 5810 3692 12887 1014 4306 1249 12169 10530 173 8196 13722 3142 1853 10083 7174 5331 10478 129 2715 125 5234 2755 5437 5245 2462 10933 1315 253 12571 8899 1...
output:
Kevin Kevin Qingyu Kevin Kevin Qingyu Qingyu Kevin Qingyu Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin Kevin Qingyu Qingyu ...
result:
ok 100 tokens
Test #18:
score: 0
Accepted
time: 180ms
memory: 5828kb
input:
10 100000 7493 57430 44931 62200 63708 37663 37199 97202 75018 1428 78073 45251 77293 21512 57563 44614 27258 5231 54600 71551 19481 5383 19587 26006 6774 57667 89215 27791 98983 63279 23210 97288 28920 76941 64795 37933 76653 95287 17252 87243 32979 38958 32536 66889 32979 84509 81349 25682 29506 3...
output:
Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Kevin
result:
ok 10 tokens
Test #19:
score: 0
Accepted
time: 197ms
memory: 27724kb
input:
1 1000000 990105 339578 1431383 333234 1673537 156657 1316162 1637902 715811 1429810 1452326 1497601 1550771 1297151 965382 1626102 171757 461904 1612510 708099 449278 679736 1430110 301807 776807 1376954 630342 105056 620262 497934 539113 1491286 1185928 278008 437293 1503007 307280 498809 1081645 ...
output:
Kevin
result:
ok "Kevin"
Test #20:
score: 0
Accepted
time: 2ms
memory: 3628kb
input:
10000 1 1 2 1 2 1 1 1 1 1 2 2 1 2 1 1 2 2 1 2 2 1 1 1 1 1 2 1 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 2 1 1 1 2 1 2 2 1 2 1 1 2 1 1 1 1 1 2 2 1 2 1 1 2 2 1 1 2 1 2 2 1 2 2 1 2 1 1 2 1 1 2 2 1 2 1 1 1 1 1 1 1 1 2 1 1 1 2 1 2 1 1 1 2 1 1 2 1 2 2 1 2 1 1 2 1 1 1 1 1 1 2 1 1 1 1 2 2 1 2 2 1 2 2 1 2 1 1 2 2 1 2 1 ...
output:
Kevin Kevin Qingyu Qingyu Kevin Qingyu Qingyu Qingyu Kevin Kevin Qingyu Kevin Kevin Qingyu Kevin Kevin Qingyu Kevin Kevin Qingyu Qingyu Kevin Qingyu Kevin Qingyu Qingyu Kevin Kevin Qingyu Kevin Qingyu Qingyu Kevin Kevin Kevin Kevin Kevin Qingyu Kevin Kevin Qingyu Kevin Qingyu Qingyu Qingyu Qingyu Ke...
result:
ok 10000 tokens
Test #21:
score: 0
Accepted
time: 2ms
memory: 3628kb
input:
10000 1 1 1 1 1 1 1 2 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 2 1 2 2 1 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 2 2 ...
output:
Qingyu Qingyu Qingyu Qingyu Kevin Qingyu Qingyu Qingyu Qingyu Qingyu Qingyu Kevin Qingyu Qingyu Kevin Kevin Qingyu Kevin Kevin Kevin Qingyu Qingyu Qingyu Qingyu Qingyu Kevin Qingyu Qingyu Qingyu Qingyu Qingyu Qingyu Kevin Qingyu Qingyu Kevin Qingyu Kevin Qingyu Qingyu Qingyu Qingyu Qingyu Qingyu Kev...
result:
ok 10000 tokens
Extra Test:
score: 0
Extra Test Passed