QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#698531 | #9251. Graph Changing | maspy | AC ✓ | 108ms | 4212kb | C++23 | 21.8kb | 2024-11-01 20:14:11 | 2024-11-01 20:14:12 |
Judging History
answer
#line 1 "/home/maspy/compro/library/my_template.hpp"
#if defined(LOCAL)
#include <my_template_compiled.hpp>
#else
// https://codeforces.com/blog/entry/96344
#pragma GCC optimize("Ofast,unroll-loops")
// いまの CF だとこれ入れると動かない?
// #pragma GCC target("avx2,popcnt")
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using u8 = uint8_t;
using u16 = uint16_t;
using u32 = uint32_t;
using u64 = uint64_t;
using i128 = __int128;
using u128 = unsigned __int128;
using f128 = __float128;
template <class T>
constexpr T infty = 0;
template <>
constexpr int infty<int> = 1'010'000'000;
template <>
constexpr ll infty<ll> = 2'020'000'000'000'000'000;
template <>
constexpr u32 infty<u32> = infty<int>;
template <>
constexpr u64 infty<u64> = infty<ll>;
template <>
constexpr i128 infty<i128> = i128(infty<ll>) * 2'000'000'000'000'000'000;
template <>
constexpr double infty<double> = infty<ll>;
template <>
constexpr long double infty<long double> = infty<ll>;
using pi = pair<ll, ll>;
using vi = vector<ll>;
template <class T>
using vc = vector<T>;
template <class T>
using vvc = vector<vc<T>>;
template <class T>
using vvvc = vector<vvc<T>>;
template <class T>
using vvvvc = vector<vvvc<T>>;
template <class T>
using vvvvvc = vector<vvvvc<T>>;
template <class T>
using pq = priority_queue<T>;
template <class T>
using pqg = priority_queue<T, vector<T>, greater<T>>;
#define vv(type, name, h, ...) vector<vector<type>> name(h, vector<type>(__VA_ARGS__))
#define vvv(type, name, h, w, ...) vector<vector<vector<type>>> name(h, vector<vector<type>>(w, vector<type>(__VA_ARGS__)))
#define vvvv(type, name, a, b, c, ...) \
vector<vector<vector<vector<type>>>> name(a, vector<vector<vector<type>>>(b, vector<vector<type>>(c, vector<type>(__VA_ARGS__))))
// https://trap.jp/post/1224/
#define FOR1(a) for (ll _ = 0; _ < ll(a); ++_)
#define FOR2(i, a) for (ll i = 0; i < ll(a); ++i)
#define FOR3(i, a, b) for (ll i = a; i < ll(b); ++i)
#define FOR4(i, a, b, c) for (ll i = a; i < ll(b); i += (c))
#define FOR1_R(a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR2_R(i, a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR3_R(i, a, b) for (ll i = (b)-1; i >= ll(a); --i)
#define overload4(a, b, c, d, e, ...) e
#define overload3(a, b, c, d, ...) d
#define FOR(...) overload4(__VA_ARGS__, FOR4, FOR3, FOR2, FOR1)(__VA_ARGS__)
#define FOR_R(...) overload3(__VA_ARGS__, FOR3_R, FOR2_R, FOR1_R)(__VA_ARGS__)
#define 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); }
int popcnt_mod_2(int x) { return __builtin_parity(x); }
int popcnt_mod_2(u32 x) { return __builtin_parity(x); }
int popcnt_mod_2(ll x) { return __builtin_parityll(x); }
int popcnt_mod_2(u64 x) { return __builtin_parityll(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>
T floor(T a, T b) {
return a / b - (a % b && (a ^ b) < 0);
}
template <typename T>
T ceil(T x, T y) {
return floor(x + y - 1, y);
}
template <typename T>
T bmod(T x, T y) {
return x - y * floor(x, y);
}
template <typename T>
pair<T, T> divmod(T x, T y) {
T q = floor(x, y);
return {q, x - q * y};
}
template <typename T, typename U>
T SUM(const vector<U> &A) {
T sm = 0;
for (auto &&a: A) sm += a;
return sm;
}
#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define LB(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(all(c), (x)))
#define UNIQUE(x) sort(all(x)), x.erase(unique(all(x)), x.end()), x.shrink_to_fit()
template <typename T>
T POP(deque<T> &que) {
T a = que.front();
que.pop_front();
return a;
}
template <typename T>
T POP(pq<T> &que) {
T a = que.top();
que.pop();
return a;
}
template <typename T>
T POP(pqg<T> &que) {
T a = que.top();
que.pop();
return a;
}
template <typename T>
T POP(vc<T> &que) {
T a = que.back();
que.pop_back();
return a;
}
template <typename F>
ll binary_search(F check, ll ok, ll ng, bool check_ok = true) {
if (check_ok) assert(check(ok));
while (abs(ok - ng) > 1) {
auto x = (ng + ok) / 2;
(check(x) ? ok : ng) = x;
}
return ok;
}
template <typename F>
double binary_search_real(F check, double ok, double ng, int iter = 100) {
FOR(iter) {
double x = (ok + ng) / 2;
(check(x) ? ok : ng) = x;
}
return (ok + ng) / 2;
}
template <class T, class S>
inline bool chmax(T &a, const S &b) {
return (a < b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chmin(T &a, const S &b) {
return (a > b ? a = b, 1 : 0);
}
// ? は -1
vc<int> s_to_vi(const string &S, char first_char) {
vc<int> A(S.size());
FOR(i, S.size()) { A[i] = (S[i] != '?' ? S[i] - first_char : -1); }
return A;
}
template <typename T, typename U>
vector<T> cumsum(vector<U> &A, int off = 1) {
int N = A.size();
vector<T> B(N + 1);
FOR(i, N) { B[i + 1] = B[i] + A[i]; }
if (off == 0) B.erase(B.begin());
return B;
}
// stable sort
template <typename T>
vector<int> argsort(const vector<T> &A) {
vector<int> ids(len(A));
iota(all(ids), 0);
sort(all(ids), [&](int i, int j) { return (A[i] == A[j] ? i < j : A[i] < A[j]); });
return ids;
}
// A[I[0]], A[I[1]], ...
template <typename T>
vc<T> rearrange(const vc<T> &A, const vc<int> &I) {
vc<T> B(len(I));
FOR(i, len(I)) B[i] = A[I[i]];
return B;
}
template <typename T, typename... Vectors>
void concat(vc<T> &first, const Vectors &... others) {
vc<T> &res = first;
(res.insert(res.end(), others.begin(), others.end()), ...);
}
#endif
#line 1 "/home/maspy/compro/library/other/io.hpp"
#define FASTIO
#include <unistd.h>
// https://judge.yosupo.jp/submission/21623
namespace fastio {
static constexpr uint32_t SZ = 1 << 17;
char ibuf[SZ];
char obuf[SZ];
char out[100];
// pointer of ibuf, obuf
uint32_t pil = 0, pir = 0, por = 0;
struct Pre {
char num[10000][4];
constexpr Pre() : num() {
for (int i = 0; i < 10000; i++) {
int n = i;
for (int j = 3; j >= 0; j--) {
num[i][j] = n % 10 | '0';
n /= 10;
}
}
}
} constexpr pre;
inline void load() {
memcpy(ibuf, ibuf + pil, pir - pil);
pir = pir - pil + fread(ibuf + pir - pil, 1, SZ - pir + pil, stdin);
pil = 0;
if (pir < SZ) ibuf[pir++] = '\n';
}
inline void flush() {
fwrite(obuf, 1, por, stdout);
por = 0;
}
void rd(char &c) {
do {
if (pil + 1 > pir) load();
c = ibuf[pil++];
} while (isspace(c));
}
void rd(string &x) {
x.clear();
char c;
do {
if (pil + 1 > pir) load();
c = ibuf[pil++];
} while (isspace(c));
do {
x += c;
if (pil == pir) load();
c = ibuf[pil++];
} while (!isspace(c));
}
template <typename T>
void rd_real(T &x) {
string s;
rd(s);
x = stod(s);
}
template <typename T>
void rd_integer(T &x) {
if (pil + 100 > pir) load();
char c;
do
c = ibuf[pil++];
while (c < '-');
bool minus = 0;
if constexpr (is_signed<T>::value || is_same_v<T, i128>) {
if (c == '-') { minus = 1, c = ibuf[pil++]; }
}
x = 0;
while ('0' <= c) { x = x * 10 + (c & 15), c = ibuf[pil++]; }
if constexpr (is_signed<T>::value || is_same_v<T, i128>) {
if (minus) x = -x;
}
}
void rd(int &x) { rd_integer(x); }
void rd(ll &x) { rd_integer(x); }
void rd(i128 &x) { rd_integer(x); }
void rd(u32 &x) { rd_integer(x); }
void rd(u64 &x) { rd_integer(x); }
void rd(u128 &x) { rd_integer(x); }
void rd(double &x) { rd_real(x); }
void rd(long double &x) { rd_real(x); }
void rd(f128 &x) { rd_real(x); }
template <class T, class U>
void rd(pair<T, U> &p) {
return rd(p.first), rd(p.second);
}
template <size_t N = 0, typename T>
void rd_tuple(T &t) {
if constexpr (N < std::tuple_size<T>::value) {
auto &x = std::get<N>(t);
rd(x);
rd_tuple<N + 1>(t);
}
}
template <class... T>
void rd(tuple<T...> &tpl) {
rd_tuple(tpl);
}
template <size_t N = 0, typename T>
void rd(array<T, N> &x) {
for (auto &d: x) rd(d);
}
template <class T>
void rd(vc<T> &x) {
for (auto &d: x) rd(d);
}
void read() {}
template <class H, class... T>
void read(H &h, T &... t) {
rd(h), read(t...);
}
void wt(const char c) {
if (por == SZ) flush();
obuf[por++] = c;
}
void wt(const string s) {
for (char c: s) wt(c);
}
void wt(const char *s) {
size_t len = strlen(s);
for (size_t i = 0; i < len; i++) wt(s[i]);
}
template <typename T>
void wt_integer(T x) {
if (por > SZ - 100) flush();
if (x < 0) { obuf[por++] = '-', x = -x; }
int outi;
for (outi = 96; x >= 10000; outi -= 4) {
memcpy(out + outi, pre.num[x % 10000], 4);
x /= 10000;
}
if (x >= 1000) {
memcpy(obuf + por, pre.num[x], 4);
por += 4;
} else if (x >= 100) {
memcpy(obuf + por, pre.num[x] + 1, 3);
por += 3;
} else if (x >= 10) {
int q = (x * 103) >> 10;
obuf[por] = q | '0';
obuf[por + 1] = (x - q * 10) | '0';
por += 2;
} else
obuf[por++] = x | '0';
memcpy(obuf + por, out + outi + 4, 96 - outi);
por += 96 - outi;
}
template <typename T>
void wt_real(T x) {
ostringstream oss;
oss << fixed << setprecision(15) << double(x);
string s = oss.str();
wt(s);
}
void wt(int x) { wt_integer(x); }
void wt(ll x) { wt_integer(x); }
void wt(i128 x) { wt_integer(x); }
void wt(u32 x) { wt_integer(x); }
void wt(u64 x) { wt_integer(x); }
void wt(u128 x) { wt_integer(x); }
void wt(double x) { wt_real(x); }
void wt(long double x) { wt_real(x); }
void wt(f128 x) { wt_real(x); }
template <class T, class U>
void wt(const pair<T, U> val) {
wt(val.first);
wt(' ');
wt(val.second);
}
template <size_t N = 0, typename T>
void wt_tuple(const T t) {
if constexpr (N < std::tuple_size<T>::value) {
if constexpr (N > 0) { wt(' '); }
const auto x = std::get<N>(t);
wt(x);
wt_tuple<N + 1>(t);
}
}
template <class... T>
void wt(tuple<T...> tpl) {
wt_tuple(tpl);
}
template <class T, size_t S>
void wt(const array<T, S> val) {
auto n = val.size();
for (size_t i = 0; i < n; i++) {
if (i) wt(' ');
wt(val[i]);
}
}
template <class T>
void wt(const vector<T> val) {
auto n = val.size();
for (size_t i = 0; i < n; i++) {
if (i) wt(' ');
wt(val[i]);
}
}
void print() { wt('\n'); }
template <class Head, class... Tail>
void print(Head &&head, Tail &&... tail) {
wt(head);
if (sizeof...(Tail)) wt(' ');
print(forward<Tail>(tail)...);
}
// gcc expansion. called automaticall after main.
void __attribute__((destructor)) _d() { flush(); }
} // namespace fastio
using fastio::read;
using fastio::print;
using fastio::flush;
#if defined(LOCAL)
#define SHOW(...) SHOW_IMPL(__VA_ARGS__, SHOW6, SHOW5, SHOW4, SHOW3, SHOW2, SHOW1)(__VA_ARGS__)
#define SHOW_IMPL(_1, _2, _3, _4, _5, _6, NAME, ...) NAME
#define SHOW1(x) print(#x, "=", (x)), flush()
#define SHOW2(x, y) print(#x, "=", (x), #y, "=", (y)), flush()
#define SHOW3(x, y, z) print(#x, "=", (x), #y, "=", (y), #z, "=", (z)), flush()
#define SHOW4(x, y, z, w) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w)), flush()
#define SHOW5(x, y, z, w, v) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w), #v, "=", (v)), flush()
#define SHOW6(x, y, z, w, v, u) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w), #v, "=", (v), #u, "=", (u)), flush()
#else
#define SHOW(...)
#endif
#define INT(...) \
int __VA_ARGS__; \
read(__VA_ARGS__)
#define LL(...) \
ll __VA_ARGS__; \
read(__VA_ARGS__)
#define U32(...) \
u32 __VA_ARGS__; \
read(__VA_ARGS__)
#define U64(...) \
u64 __VA_ARGS__; \
read(__VA_ARGS__)
#define STR(...) \
string __VA_ARGS__; \
read(__VA_ARGS__)
#define CHAR(...) \
char __VA_ARGS__; \
read(__VA_ARGS__)
#define DBL(...) \
double __VA_ARGS__; \
read(__VA_ARGS__)
#define VEC(type, name, size) \
vector<type> name(size); \
read(name)
#define VV(type, name, h, w) \
vector<vector<type>> name(h, vector<type>(w)); \
read(name)
void YES(bool t = 1) { print(t ? "YES" : "NO"); }
void NO(bool t = 1) { YES(!t); }
void Yes(bool t = 1) { print(t ? "Yes" : "No"); }
void No(bool t = 1) { Yes(!t); }
void yes(bool t = 1) { print(t ? "yes" : "no"); }
void no(bool t = 1) { yes(!t); }
#line 3 "main.cpp"
#line 2 "/home/maspy/compro/library/graph/base.hpp"
template <typename T>
struct Edge {
int frm, to;
T cost;
int id;
};
template <typename T = int, bool directed = false>
struct Graph {
static constexpr bool is_directed = directed;
int N, M;
using cost_type = T;
using edge_type = Edge<T>;
vector<edge_type> edges;
vector<int> indptr;
vector<edge_type> csr_edges;
vc<int> vc_deg, vc_indeg, vc_outdeg;
bool prepared;
class OutgoingEdges {
public:
OutgoingEdges(const Graph* G, int l, int r) : G(G), l(l), r(r) {}
const edge_type* begin() const {
if (l == r) { return 0; }
return &G->csr_edges[l];
}
const edge_type* end() const {
if (l == r) { return 0; }
return &G->csr_edges[r];
}
private:
const Graph* G;
int l, r;
};
bool is_prepared() { return prepared; }
Graph() : N(0), M(0), prepared(0) {}
Graph(int N) : N(N), M(0), prepared(0) {}
void build(int n) {
N = n, M = 0;
prepared = 0;
edges.clear();
indptr.clear();
csr_edges.clear();
vc_deg.clear();
vc_indeg.clear();
vc_outdeg.clear();
}
void add(int frm, int to, T cost = 1, int i = -1) {
assert(!prepared);
assert(0 <= frm && 0 <= to && to < N);
if (i == -1) i = M;
auto e = edge_type({frm, to, cost, i});
edges.eb(e);
++M;
}
#ifdef FASTIO
// wt, off
void read_tree(bool wt = false, int off = 1) { read_graph(N - 1, wt, off); }
void read_graph(int M, bool wt = false, int off = 1) {
for (int m = 0; m < M; ++m) {
INT(a, b);
a -= off, b -= off;
if (!wt) {
add(a, b);
} else {
T c;
read(c);
add(a, b, c);
}
}
build();
}
#endif
void build() {
assert(!prepared);
prepared = true;
indptr.assign(N + 1, 0);
for (auto&& e: edges) {
indptr[e.frm + 1]++;
if (!directed) indptr[e.to + 1]++;
}
for (int v = 0; v < N; ++v) { indptr[v + 1] += indptr[v]; }
auto counter = indptr;
csr_edges.resize(indptr.back() + 1);
for (auto&& e: edges) {
csr_edges[counter[e.frm]++] = e;
if (!directed)
csr_edges[counter[e.to]++] = edge_type({e.to, e.frm, e.cost, e.id});
}
}
OutgoingEdges operator[](int v) const {
assert(prepared);
return {this, indptr[v], indptr[v + 1]};
}
vc<int> deg_array() {
if (vc_deg.empty()) calc_deg();
return vc_deg;
}
pair<vc<int>, vc<int>> deg_array_inout() {
if (vc_indeg.empty()) calc_deg_inout();
return {vc_indeg, vc_outdeg};
}
int deg(int v) {
if (vc_deg.empty()) calc_deg();
return vc_deg[v];
}
int in_deg(int v) {
if (vc_indeg.empty()) calc_deg_inout();
return vc_indeg[v];
}
int out_deg(int v) {
if (vc_outdeg.empty()) calc_deg_inout();
return vc_outdeg[v];
}
#ifdef FASTIO
void debug() {
print("Graph");
if (!prepared) {
print("frm to cost id");
for (auto&& e: edges) print(e.frm, e.to, e.cost, e.id);
} else {
print("indptr", indptr);
print("frm to cost id");
FOR(v, N) for (auto&& e: (*this)[v]) print(e.frm, e.to, e.cost, e.id);
}
}
#endif
vc<int> new_idx;
vc<bool> used_e;
// G における頂点 V[i] が、新しいグラフで i になるようにする
// {G, es}
// sum(deg(v)) の計算量になっていて、
// 新しいグラフの n+m より大きい可能性があるので注意
Graph<T, directed> rearrange(vc<int> V, bool keep_eid = 0) {
if (len(new_idx) != N) new_idx.assign(N, -1);
int n = len(V);
FOR(i, n) new_idx[V[i]] = i;
Graph<T, directed> G(n);
vc<int> history;
FOR(i, n) {
for (auto&& e: (*this)[V[i]]) {
if (len(used_e) <= e.id) used_e.resize(e.id + 1);
if (used_e[e.id]) continue;
int a = e.frm, b = e.to;
if (new_idx[a] != -1 && new_idx[b] != -1) {
history.eb(e.id);
used_e[e.id] = 1;
int eid = (keep_eid ? e.id : -1);
G.add(new_idx[a], new_idx[b], e.cost, eid);
}
}
}
FOR(i, n) new_idx[V[i]] = -1;
for (auto&& eid: history) used_e[eid] = 0;
G.build();
return G;
}
Graph<T, true> to_directed_tree(int root = -1) {
if (root == -1) root = 0;
assert(!is_directed && prepared && M == N - 1);
Graph<T, true> G1(N);
vc<int> par(N, -1);
auto dfs = [&](auto& dfs, int v) -> void {
for (auto& e: (*this)[v]) {
if (e.to == par[v]) continue;
par[e.to] = v, dfs(dfs, e.to);
}
};
dfs(dfs, root);
for (auto& e: edges) {
int a = e.frm, b = e.to;
if (par[a] == b) swap(a, b);
assert(par[b] == a);
G1.add(a, b, e.cost);
}
G1.build();
return G1;
}
private:
void calc_deg() {
assert(vc_deg.empty());
vc_deg.resize(N);
for (auto&& e: edges) vc_deg[e.frm]++, vc_deg[e.to]++;
}
void calc_deg_inout() {
assert(vc_indeg.empty());
vc_indeg.resize(N);
vc_outdeg.resize(N);
for (auto&& e: edges) { vc_indeg[e.to]++, vc_outdeg[e.frm]++; }
}
};
#line 3 "/home/maspy/compro/library/graph/shortest_path/bfs01.hpp"
template <typename T, typename GT>
pair<vc<T>, vc<int>> bfs01(GT& G, int v) {
assert(G.is_prepared());
int N = G.N;
vc<T> dist(N, infty<T>);
vc<int> par(N, -1);
deque<int> que;
dist[v] = 0;
que.push_front(v);
while (!que.empty()) {
auto v = que.front();
que.pop_front();
for (auto&& e: G[v]) {
if (dist[e.to] == infty<T> || dist[e.to] > dist[e.frm] + e.cost) {
dist[e.to] = dist[e.frm] + e.cost;
par[e.to] = e.frm;
if (e.cost == 0)
que.push_front(e.to);
else
que.push_back(e.to);
}
}
}
return {dist, par};
}
// 多点スタート。[dist, par, root]
template <typename T, typename GT>
tuple<vc<T>, vc<int>, vc<int>> bfs01(GT& G, vc<int> vs) {
assert(G.is_prepared());
int N = G.N;
vc<T> dist(N, infty<T>);
vc<int> par(N, -1);
vc<int> root(N, -1);
deque<int> que;
for (auto&& v: vs) {
dist[v] = 0;
root[v] = v;
que.push_front(v);
}
while (!que.empty()) {
auto v = que.front();
que.pop_front();
for (auto&& e: G[v]) {
if (dist[e.to] == infty<T> || dist[e.to] > dist[e.frm] + e.cost) {
dist[e.to] = dist[e.frm] + e.cost;
root[e.to] = root[e.frm];
par[e.to] = e.frm;
if (e.cost == 0)
que.push_front(e.to);
else
que.push_back(e.to);
}
}
}
return {dist, par, root};
}
#line 5 "main.cpp"
ll naive(ll T, ll N, ll K, ll X, ll Y) {
vv(int, mat, N, N, infty<int>);
FOR(i, N) FOR(j, N) mat[i][j] = abs(i - j);
FOR(T) {
FOR(i, N) FOR(j, N) {
if (i == j) continue;
if (mat[i][j] < K) mat[i][j] = infty<int>;
if (mat[i][j] < infty<int>) mat[i][j] = 1;
}
FOR(k, N) FOR(i, N) FOR(j, N) { chmin(mat[i][j], mat[i][k] + mat[k][j]); }
}
ll ans = mat[X][Y];
if (ans == infty<int>) return -1;
return ans;
}
ll F(ll T, ll N, ll K, ll X, ll Y) {
if (T == 0) { return (abs(X - Y)); }
if (T == 1) {
Graph<int, 0> G(4);
vi V = {X, Y, 0, N - 1};
FOR(a, 4) FOR(b, a) {
if (abs(V[a] - V[b]) >= K) G.add(a, b);
}
G.build();
auto [dist, par] = bfs01<int>(G, 0);
int ans = dist[1];
if (ans == infty<int>) ans = -1;
return ans;
}
if (K >= 4) return -1;
if (K == 3) {
if (N >= 8) {
// T=1 で完全グラフになっている
// そこから先は空グラフ
return -1;
}
vv(int, mat, N, N, infty<int>);
FOR(i, N) mat[i][i] = 0;
FOR(i, N - 1) mat[i][i + 1] = mat[i + 1][i] = 1;
chmin(T, 5);
return naive(T, N, K, X, Y);
}
assert(K <= 2);
if (K == 1) {
// 完全
return 1;
}
assert(K == 2 && T >= 2);
if (N == 2) { return -1; }
if (N == 3) { return -1; }
// 補グラフ
T %= 2;
if (N <= 5) { return naive(T, N, K, X, Y); }
if (T == 0) return abs(X - Y);
return (abs(X - Y) == 1 ? 2 : 1);
}
void solve() {
LL(T, N, K, X, Y);
--X, --Y;
print(F(T, N, K, X, Y));
}
void test() {
FOR(T, 1, 10) FOR(N, 1, 10) FOR(K, 1, 10) {
FOR(X, N) FOR(Y, N) {
if (X == Y) continue;
ll a = F(T, N, K, X, Y);
ll b = naive(T, N, K, X, Y);
SHOW(T, N, K, X, Y);
SHOW(a, b);
assert(a == b);
}
}
}
signed main() {
// test();
// return 0;
INT(T);
FOR(T) solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3932kb
input:
5 1 5 3 2 4 1 10 4 2 4 2 10 5 2 4 1 3 2 1 3 1 3 2 1 2
output:
3 2 -1 1 -1
result:
ok 5 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3708kb
input:
30 1 2 1 1 2 1 2 2 1 2 1 2 3 1 2 1 2 4 1 2 1 2 5 1 2 1 2 6 1 2 2 2 1 1 2 2 2 2 1 2 2 2 3 1 2 2 2 4 1 2 2 2 5 1 2 2 2 6 1 2 3 2 1 1 2 3 2 2 1 2 3 2 3 1 2 3 2 4 1 2 3 2 5 1 2 3 2 6 1 2 4 2 1 1 2 4 2 2 1 2 4 2 3 1 2 4 2 4 1 2 4 2 5 1 2 4 2 6 1 2 5 2 1 1 2 5 2 2 1 2 5 2 3 1 2 5 2 4 1 2 5 2 5 1 2 5 2 6 1 2
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
result:
ok 30 lines
Test #3:
score: 0
Accepted
time: 1ms
memory: 3972kb
input:
90 1 3 1 1 2 1 3 1 1 3 1 3 1 2 3 1 3 2 1 2 1 3 2 1 3 1 3 2 2 3 1 3 3 1 2 1 3 3 1 3 1 3 3 2 3 1 3 4 1 2 1 3 4 1 3 1 3 4 2 3 1 3 5 1 2 1 3 5 1 3 1 3 5 2 3 1 3 6 1 2 1 3 6 1 3 1 3 6 2 3 2 3 1 1 2 2 3 1 1 3 2 3 1 2 3 2 3 2 1 2 2 3 2 1 3 2 3 2 2 3 2 3 3 1 2 2 3 3 1 3 2 3 3 2 3 2 3 4 1 2 2 3 4 1 3 2 3 4 2...
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
result:
ok 90 lines
Test #4:
score: 0
Accepted
time: 0ms
memory: 3704kb
input:
180 1 4 1 1 2 1 4 1 1 3 1 4 1 1 4 1 4 1 2 3 1 4 1 2 4 1 4 1 3 4 1 4 2 1 2 1 4 2 1 3 1 4 2 1 4 1 4 2 2 3 1 4 2 2 4 1 4 2 3 4 1 4 3 1 2 1 4 3 1 3 1 4 3 1 4 1 4 3 2 3 1 4 3 2 4 1 4 3 3 4 1 4 4 1 2 1 4 4 1 3 1 4 4 1 4 1 4 4 2 3 1 4 4 2 4 1 4 4 3 4 1 4 5 1 2 1 4 5 1 3 1 4 5 1 4 1 4 5 2 3 1 4 5 2 4 1 4 5 ...
output:
1 1 1 1 1 1 2 1 1 3 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 1 1 1 1 1 2 3 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 1 1 1 1 1 2 1 1 3 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 1 1 1 1 1...
result:
ok 180 lines
Test #5:
score: 0
Accepted
time: 0ms
memory: 3724kb
input:
300 1 5 1 1 2 1 5 1 1 3 1 5 1 1 4 1 5 1 1 5 1 5 1 2 3 1 5 1 2 4 1 5 1 2 5 1 5 1 3 4 1 5 1 3 5 1 5 1 4 5 1 5 2 1 2 1 5 2 1 3 1 5 2 1 4 1 5 2 1 5 1 5 2 2 3 1 5 2 2 4 1 5 2 2 5 1 5 2 3 4 1 5 2 3 5 1 5 2 4 5 1 5 3 1 2 1 5 3 1 3 1 5 3 1 4 1 5 3 1 5 1 5 3 2 3 1 5 3 2 4 1 5 3 2 5 1 5 3 3 4 1 5 3 3 5 1 5 3 ...
output:
1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 2 1 2 2 -1 1 1 -1 3 1 -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 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 1 2 3 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 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
result:
ok 300 lines
Test #6:
score: 0
Accepted
time: 1ms
memory: 3716kb
input:
450 1 6 1 1 2 1 6 1 1 3 1 6 1 1 4 1 6 1 1 5 1 6 1 1 6 1 6 1 2 3 1 6 1 2 4 1 6 1 2 5 1 6 1 2 6 1 6 1 3 4 1 6 1 3 5 1 6 1 3 6 1 6 1 4 5 1 6 1 4 6 1 6 1 5 6 1 6 2 1 2 1 6 2 1 3 1 6 2 1 4 1 6 2 1 5 1 6 2 1 6 1 6 2 2 3 1 6 2 2 4 1 6 2 2 5 1 6 2 2 6 1 6 2 3 4 1 6 2 3 5 1 6 2 3 6 1 6 2 4 5 1 6 2 4 6 1 6 2 ...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 2 1 2 2 2 1 1 1 2 3 1 1 3 3 1 2 2 2 2 -1 -1 1 1 -1 -1 3 1 -1 -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 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 -1 -1 -1 -1 -1 2 1 3 -...
result:
ok 450 lines
Test #7:
score: 0
Accepted
time: 1ms
memory: 3760kb
input:
630 1 7 1 1 2 1 7 1 1 3 1 7 1 1 4 1 7 1 1 5 1 7 1 1 6 1 7 1 1 7 1 7 1 2 3 1 7 1 2 4 1 7 1 2 5 1 7 1 2 6 1 7 1 2 7 1 7 1 3 4 1 7 1 3 5 1 7 1 3 6 1 7 1 3 7 1 7 1 4 5 1 7 1 4 6 1 7 1 4 7 1 7 1 5 6 1 7 1 5 7 1 7 1 6 7 1 7 2 1 2 1 7 2 1 3 1 7 2 1 4 1 7 2 1 5 1 7 2 1 6 1 7 2 1 7 1 7 2 2 3 1 7 2 2 4 1 7 2 ...
output:
1 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 2 1 1 1 1 2 1 1 1 2 1 1 2 1 2 2 2 1 1 1 1 2 2 1 1 1 2 3 1 1 2 2 1 2 2 2 2 2 -1 1 1 1 2 -1 3 1 1 -1 3 3 1 -1 -1 -1 2 2 2 2 -1 -1 -1 1 1 -1 -1 -1 3 1 -1 -1 -1 -1 -1 -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 -1 1 1 1 1...
result:
ok 630 lines
Test #8:
score: 0
Accepted
time: 1ms
memory: 3716kb
input:
840 1 8 1 1 2 1 8 1 1 3 1 8 1 1 4 1 8 1 1 5 1 8 1 1 6 1 8 1 1 7 1 8 1 1 8 1 8 1 2 3 1 8 1 2 4 1 8 1 2 5 1 8 1 2 6 1 8 1 2 7 1 8 1 2 8 1 8 1 3 4 1 8 1 3 5 1 8 1 3 6 1 8 1 3 7 1 8 1 3 8 1 8 1 4 5 1 8 1 4 6 1 8 1 4 7 1 8 1 4 8 1 8 1 5 6 1 8 1 5 7 1 8 1 5 8 1 8 1 6 7 1 8 1 6 8 1 8 1 7 8 1 8 2 1 2 1 8 2 ...
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 2 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 2 1 2 2 2 1 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 2 2 1 1 2 2 1 2 2 2 2 2 2 1 1 1 1 2 2 3 1 1 1 2 3 3 1 1 3 3 3 1 2 2 2 2 2 2 2 2 -1 -1 1 1 1 2 -1 -1 3 1 1 -1 -1 3 3 1 -1 -1 -1 -1 -1 -1 -1 2 2 2 2 -1 -1...
result:
ok 840 lines
Test #9:
score: 0
Accepted
time: 1ms
memory: 3724kb
input:
1080 1 9 1 1 2 1 9 1 1 3 1 9 1 1 4 1 9 1 1 5 1 9 1 1 6 1 9 1 1 7 1 9 1 1 8 1 9 1 1 9 1 9 1 2 3 1 9 1 2 4 1 9 1 2 5 1 9 1 2 6 1 9 1 2 7 1 9 1 2 8 1 9 1 2 9 1 9 1 3 4 1 9 1 3 5 1 9 1 3 6 1 9 1 3 7 1 9 1 3 8 1 9 1 3 9 1 9 1 4 5 1 9 1 4 6 1 9 1 4 7 1 9 1 4 8 1 9 1 4 9 1 9 1 5 6 1 9 1 5 7 1 9 1 5 8 1 9 1...
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 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 2 1 2 2 2 1 1 1 1 1 1 2 2 1 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 2 2 1 1 2 2 1 2 2 2 2 2 2 1 1 1 1 1 2 2 2 1 1 1 1 2 2 3 1 1 1 2 3 3 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 -1 1 1...
result:
ok 1080 lines
Test #10:
score: 0
Accepted
time: 1ms
memory: 3768kb
input:
1350 1 10 1 1 2 1 10 1 1 3 1 10 1 1 4 1 10 1 1 5 1 10 1 1 6 1 10 1 1 7 1 10 1 1 8 1 10 1 1 9 1 10 1 1 10 1 10 1 2 3 1 10 1 2 4 1 10 1 2 5 1 10 1 2 6 1 10 1 2 7 1 10 1 2 8 1 10 1 2 9 1 10 1 2 10 1 10 1 3 4 1 10 1 3 5 1 10 1 3 6 1 10 1 3 7 1 10 1 3 8 1 10 1 3 9 1 10 1 3 10 1 10 1 4 5 1 10 1 4 6 1 10 1...
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 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 2 1 2 2 2 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 2 2 1 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 2 2 1 1 2 2 1 2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 1 1 1 ...
result:
ok 1350 lines
Test #11:
score: 0
Accepted
time: 1ms
memory: 3728kb
input:
1650 1 11 1 1 2 1 11 1 1 3 1 11 1 1 4 1 11 1 1 5 1 11 1 1 6 1 11 1 1 7 1 11 1 1 8 1 11 1 1 9 1 11 1 1 10 1 11 1 1 11 1 11 1 2 3 1 11 1 2 4 1 11 1 2 5 1 11 1 2 6 1 11 1 2 7 1 11 1 2 8 1 11 1 2 9 1 11 1 2 10 1 11 1 2 11 1 11 1 3 4 1 11 1 3 5 1 11 1 3 6 1 11 1 3 7 1 11 1 3 8 1 11 1 3 9 1 11 1 3 10 1 11...
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 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 2 1 2 2 2 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 2 2 1 1 1 1 1 2 2 1 1 1 1 ...
result:
ok 1650 lines
Test #12:
score: 0
Accepted
time: 1ms
memory: 3964kb
input:
1980 1 12 1 1 2 1 12 1 1 3 1 12 1 1 4 1 12 1 1 5 1 12 1 1 6 1 12 1 1 7 1 12 1 1 8 1 12 1 1 9 1 12 1 1 10 1 12 1 1 11 1 12 1 1 12 1 12 1 2 3 1 12 1 2 4 1 12 1 2 5 1 12 1 2 6 1 12 1 2 7 1 12 1 2 8 1 12 1 2 9 1 12 1 2 10 1 12 1 2 11 1 12 1 2 12 1 12 1 3 4 1 12 1 3 5 1 12 1 3 6 1 12 1 3 7 1 12 1 3 8 1 1...
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 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 2 1 2 2 2 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 ...
result:
ok 1980 lines
Test #13:
score: 0
Accepted
time: 0ms
memory: 3996kb
input:
2340 1 13 1 1 2 1 13 1 1 3 1 13 1 1 4 1 13 1 1 5 1 13 1 1 6 1 13 1 1 7 1 13 1 1 8 1 13 1 1 9 1 13 1 1 10 1 13 1 1 11 1 13 1 1 12 1 13 1 1 13 1 13 1 2 3 1 13 1 2 4 1 13 1 2 5 1 13 1 2 6 1 13 1 2 7 1 13 1 2 8 1 13 1 2 9 1 13 1 2 10 1 13 1 2 11 1 13 1 2 12 1 13 1 2 13 1 13 1 3 4 1 13 1 3 5 1 13 1 3 6 1...
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 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 ...
result:
ok 2340 lines
Test #14:
score: 0
Accepted
time: 52ms
memory: 3952kb
input:
1000000 247642294 961448649 733001129 279130562 530835402 732002655 505705299 645705556 487588093 488005936 423909487 956469930 42118321 776825480 857914491 573024322 173584499 411922860 68071790 127760171 195256403 617390756 240978977 289616458 604023215 302970816 281642201 617886109 245587163 2738...
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 1000000 lines
Test #15:
score: 0
Accepted
time: 47ms
memory: 4212kb
input:
999999 818561732 105393047 308277328 55828222 95820891 626623416 914227808 963423453 365760112 463062746 685116026 447528560 848245265 304903588 410888549 190989264 573411702 351364570 477139815 538078040 165251011 443239658 880597903 283340857 321622039 580345373 729628729 253275172 260647549 56083...
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 999999 lines
Test #16:
score: 0
Accepted
time: 47ms
memory: 3956kb
input:
999998 641304551 95615249 714496774 44706863 82597067 99120825 296948618 325272169 221497167 253219866 547135214 407423323 615477879 395311431 402237613 902423318 562586582 197117012 215866474 332581531 746228275 461110170 365490393 8270545 13567149 209099954 601749155 822593415 70976179 302958983 7...
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 999998 lines
Test #17:
score: 0
Accepted
time: 50ms
memory: 4012kb
input:
999997 759014662 790870149 120716220 312341665 750583643 908054724 384702127 982088181 220708338 372080663 745590890 662285387 822901980 14637938 407944387 613857370 473613609 192612558 314642869 447537089 327205537 773947983 850382884 367385950 465660605 542887244 473869581 242168554 442534885 4616...
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 999997 lines
Test #18:
score: 0
Accepted
time: 56ms
memory: 4212kb
input:
999996 286790189 76059652 676678771 27025196 72899785 380552134 140538090 638904193 140356967 140371077 944046566 622180150 180069186 386081350 473991190 325291423 167821189 333332295 37470414 135098524 834553872 8637942 335275375 984215 5958852 245270753 51022707 516519501 15376414 50059575 4736168...
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 999996 lines
Test #19:
score: 0
Accepted
time: 102ms
memory: 3972kb
input:
1000000 5 961448649 14 279130562 530835402 0 505705299 11 487588093 488005936 5 956469930 6 776825480 857914491 5 173584499 5 68071790 127760171 5 617390756 2 289616458 604023215 2 281642201 14 245587163 273817065 5 411506287 9 42526705 317589066 3 547485462 9 271470684 437838096 5 996351074 6 74856...
output:
-1 417843 -1 -1 1 -1 -1 -1 -1 1 -1 1 6580696 422807208 153431515 -1 179429643 -1 84805156 -1 654790747 60452774 31347044 15066715 -1 18522683 -1 4346920 1 -1 -1 22973969 1 24950066 -1 -1 96093015 -1 1 -1 -1 -1 -1 -1 18083094 42298920 -1 1 -1 -1 -1 -1 1 -1 -1 90334756 24178093 126162761 -1 -1 -1 -1 1...
result:
ok 1000000 lines
Test #20:
score: 0
Accepted
time: 101ms
memory: 3852kb
input:
999999 0 105393047 8 55828222 95820891 2 914227808 13 365760112 463062746 3 447528560 10 304903588 410888549 1 573411702 5 477139815 538078040 5 443239658 13 283340857 321622039 5 729628729 7 260647549 560838179 3 215299701 10 34885046 213523791 2 859374122 1 544508624 795986441 4 864873312 7 416831...
output:
39992669 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 10573113 -1 1 -1 -1 1 1 -1 -1 -1 68522961 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 17590651 -1 -1 -1 -1 11554641 -1 1 1 1 -1 -1 288548258 447374910 -1 1 1 19114954 -1 -1 1 1 -1 -1 -1 1 -1 121545976 1 -1 -1 -1 -1 1 -1 -1 -1 22273383 -1 99473454...
result:
ok 999999 lines
Test #21:
score: 0
Accepted
time: 97ms
memory: 4188kb
input:
999998 4 95615249 9 44706863 82597067 1 296948618 14 221497167 253219866 4 407423323 14 395311431 402237613 4 562586582 7 215866474 332581531 5 461110170 3 8270545 13567149 1 601749155 15 70976179 302958983 2 932067490 13 282852789 866650449 3 392745208 11 84796685 215041796 5 181898334 11 141866145...
output:
-1 1 -1 -1 -1 1 -1 -1 -1 350618868 -1 -1 -1 1 -1 -1 -1 1 -1 -1 71256593 1 122819155 20990479 274550506 -1 1 -1 -1 -1 1 -1 -1 -1 -1 118002775 -1 1 -1 -1 1 -1 -1 1 -1 -1 41577280 -1 -1 -1 -1 63382083 -1 -1 1 -1 1 -1 -1 640147 1 -1 254225645 86753831 103490873 54662526 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 80...
result:
ok 999998 lines
Test #22:
score: 0
Accepted
time: 106ms
memory: 4024kb
input:
999997 0 790870149 10 312341665 750583643 4 384702127 1 220708338 372080663 2 662285387 10 14637938 407944387 0 473613609 3 314642869 447537089 4 773947983 9 367385950 465660605 5 473869581 14 442534885 461613235 0 726983133 1 417689049 679009425 5 221083595 5 123544654 169809378 0 872038508 7 57750...
output:
438241978 1 -1 132894220 -1 -1 261320376 -1 256026211 81434046 -1 483828385 1 -1 1 -1 -1 1 1 1 -1 -1 316297589 -1 -1 -1 -1 138841964 1 -1 1 149402190 28459733 -1 -1 -1 1 1 1 1 172487273 78450129 5779513 -1 1 -1 -1 -1 84682459 -1 -1 7655353 -1 -1 1 -1 -1 -1 -1 1 -1 -1 391436221 -1 -1 1 52970836 -1 -1...
result:
ok 999997 lines
Test #23:
score: 0
Accepted
time: 102ms
memory: 3936kb
input:
999996 0 76059652 6 27025196 72899785 4 140538090 3 140356967 140371077 0 622180150 1 386081350 473991190 3 167821189 5 37470414 135098524 3 8637942 15 984215 5958852 1 51022707 6 15376414 50059575 0 443750923 11 345920051 385212659 3 459487380 15 354903169 361806660 4 562178684 12 325063103 5252331...
output:
45874589 -1 87909840 -1 -1 1 39292608 -1 -1 1 -1 -1 -1 -1 20865528 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 67152271 -1 -1 77079066 1 -1 1 -1 40195106 -1 -1 1 169344308 10313868 1 1 50691532 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 22802409 -1 1 1 -1 -1 -1 1 31178015 -1 -1 -1 1 -1 -1 14200880 1 -1 2356...
result:
ok 999996 lines
Test #24:
score: 0
Accepted
time: 104ms
memory: 4028kb
input:
1000000 5 6 9 2 5 0 6 6 1 5 5 6 1 3 4 5 5 10 4 5 5 8 7 2 3 2 8 9 3 4 5 7 9 1 6 3 9 9 7 9 5 8 1 1 4 5 2 6 1 2 2 2 3 1 2 5 7 7 5 7 0 10 7 2 3 0 8 1 2 6 0 6 3 1 6 5 10 4 6 7 0 4 6 3 4 4 8 5 5 6 0 5 2 3 5 3 3 8 2 3 0 3 6 2 3 0 5 10 2 4 0 9 4 6 9 0 2 2 1 2 5 9 5 3 7 0 2 7 1 2 4 4 7 1 3 0 10 1 1 2 5 2 1 1...
output:
-1 4 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 4 5 -1 1 -1 2 -1 1 2 3 1 -1 1 -1 1 1 -1 1 1 2 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 3 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 6 1 -1 5 -1 -1 -1 -1 2 1 1 1 1 -1 -1 -1 -1 5 -1 -1 -1 1 -1 2 -1 -1 1 -1 -1 -1 -1 -1 2 -1 -1 -1 1 -1 -1 -1 1 -1 -1 3 1 -1 2 -1 1 -1 1 -1 -1 -1 3 1 -1 -1 1 -1 ...
result:
ok 1000000 lines
Test #25:
score: 0
Accepted
time: 108ms
memory: 4204kb
input:
999999 0 5 8 4 5 2 5 3 1 3 3 5 5 4 5 1 3 10 1 3 5 8 3 2 6 5 7 2 1 5 3 9 10 6 9 2 5 1 1 4 4 6 7 3 5 3 3 4 1 3 5 10 10 7 9 1 6 4 5 6 5 10 7 2 10 4 7 2 6 7 4 7 10 6 7 2 6 10 4 5 5 8 4 5 6 1 4 6 3 4 3 5 5 1 5 5 4 9 2 3 3 5 5 3 4 1 5 4 4 5 0 10 8 1 4 3 5 9 1 4 5 8 6 5 6 2 8 6 2 3 3 4 3 3 4 3 8 2 6 7 1 10...
output:
1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 2 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 3 -1 -1 -1 -1 2 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 2 -1 1 2 1 -1 1 3 -1 -1 -1 1 1 -1 2 -1 -1 -1 -1 2 -1 -1 2 2 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 2 -1 -1 -1 -1 -1 -1 3 -1 1 -1 -1 -1 -1 -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 999999 lines
Test #26:
score: 0
Accepted
time: 104ms
memory: 4188kb
input:
999998 4 5 4 3 5 1 8 9 3 6 4 10 9 3 7 4 2 2 1 2 5 3 3 1 2 1 2 5 1 2 2 4 3 3 4 3 4 6 2 4 5 9 6 6 8 0 6 8 4 5 3 8 4 4 6 4 8 3 4 5 4 5 6 3 5 1 10 9 7 8 5 6 5 5 6 5 8 3 5 6 2 8 5 4 8 1 10 9 5 9 5 10 7 1 9 5 8 2 4 7 0 5 4 4 5 1 10 5 3 9 0 4 5 3 4 2 8 2 5 7 4 3 2 1 3 3 7 9 3 6 1 9 4 4 6 3 9 1 7 8 3 7 6 1 ...
output:
-1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 2 -1 -1 3 1 -1 1 2 1 -1 -1 -1 1 1 2 -1 -1 1 -1 -1 -1 -1 -1 4 -1 -1 -1 -1 3 -1 -1 1 -1 1 -1 -1 1 1 -1 2 2 1 1 2 -1 2 -1 -1 -1 1 -1 2 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 4 -1 -1 1 1 -1 2 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 ...
result:
ok 999998 lines
Test #27:
score: 0
Accepted
time: 96ms
memory: 4068kb
input:
999997 0 9 10 1 3 4 7 1 6 7 2 2 10 1 2 0 3 8 1 3 4 3 4 2 3 5 6 4 5 6 0 6 1 2 6 5 8 5 4 5 0 5 7 3 5 2 7 2 1 7 3 8 1 3 6 0 10 2 4 5 1 8 7 4 5 3 2 9 1 2 1 9 10 5 9 5 4 6 1 4 3 3 9 2 3 1 3 7 2 3 1 9 6 3 5 1 2 5 1 2 5 10 3 7 9 3 3 6 2 3 0 7 5 1 6 3 5 4 4 5 2 2 8 1 2 3 6 5 1 5 3 5 10 1 2 0 5 9 4 5 1 2 5 1...
output:
2 1 -1 2 -1 -1 4 -1 2 6 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 5 -1 -1 -1 -1 1 -1 4 2 3 1 -1 -1 -1 3 2 1 -1 -1 1 3 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 3 -1 1 -1 -1 -1 1 2 -1 -1 -1 -1 -1 1 2 1 -1 -1 1 -1 6 -1 -1 -1 -1 3 -1 1 -1 -1 -1 -1 2 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 2 1 -1 -...
result:
ok 999997 lines
Test #28:
score: 0
Accepted
time: 103ms
memory: 4192kb
input:
999996 0 4 1 2 3 4 3 3 2 3 0 7 6 1 7 3 7 5 6 7 3 3 5 1 2 1 6 1 2 6 0 10 6 2 10 3 3 10 2 3 4 2 2 1 2 1 9 8 5 6 5 8 6 6 8 3 8 7 3 6 5 8 8 3 5 2 4 1 2 3 2 2 7 1 2 3 6 3 5 6 1 10 9 8 10 5 5 6 4 5 1 5 5 2 3 4 7 3 6 7 1 2 8 1 2 3 8 3 1 7 1 2 3 1 2 2 9 3 3 5 5 6 2 5 6 3 4 3 3 4 1 5 2 2 3 5 7 2 1 4 0 2 8 1 ...
output:
1 -1 6 -1 -1 1 8 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 -1 2 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 -1 2 -1 1 -1 2 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 4 1 2 1 -1 1 2 2 -1 -1 -1 1 -1 -1 2 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 2 5 1 -1 -1 ...
result:
ok 999996 lines
Extra Test:
score: 0
Extra Test Passed