QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#853223 | #9733. Heavy-light Decomposition | ucup-team5243# | AC ✓ | 38ms | 6728kb | C++23 | 16.1kb | 2025-01-11 16:11:51 | 2025-01-11 16:11:57 |
Judging History
answer
//line 1 "answer.cpp"
#if !__INCLUDE_LEVEL__
#include __FILE__
const string IMPOSSIBLE = "IMPOSSIBLE";
int solve() {
ll n,k; input(n, k);
vector<pll> p;
rep(i, k) {
ll l, r; input(l, r);
p.emplace_back(l-1, r);
}
sort(all(p));
if (p[0].first != 0) {return print(IMPOSSIBLE);}
if (p[k-1].second != n) {return print(IMPOSSIBLE);}
rep(i, k-1) {
auto [l1, r1] = p[i];
auto [l2, r2] = p[i+1];
debug(l1, r1, l2, r2);
if (r1 != l2) {return print(IMPOSSIBLE);}
}
debug("first check");
ll mx = -INFL;
ll id = -1;
ll cnt = 0;
rep(i, k) {
auto [l, r] = p[i];
if (chmax(mx, r-l)) {
id = i;
cnt = 0;
}
if ((r - l) == mx) cnt++;
}
if (cnt == 1) {
ll root = p[id].first;
vl ans(n);
rep(i, k) {
auto [l, r] = p[i];
if (i == id) ans[l] = 0;
else ans[l] = root + 1;
rep(j, l+1, r) {
ans[j] = j;
}
}
return print(ans);
}
auto check = [&] () -> bool {
rep(i, k) {
auto [l, r] = p[i];
if (r - l <= mx - 2) return true;
}
return false;
};
if (!check()) {return print(IMPOSSIBLE);}
ll root = p[id].first;
vl ans(n);
rep(i, k) {
auto [l, r] = p[i];
if (i == id) ans[l] = 0;
else if (r - l >= mx - 1) ans[l] = root + 1;
else ans[l] = root + 2;
rep(j, l+1, r) { ans[j] = j; }
}
return print(ans);
}
int main() {
ll t; input(t);
rep(t) solve();
}
#else
//line 2 "/home/seekworser/.cpp_lib/competitive_library/competitive/std/std.hpp"
#include <bits/stdc++.h>
#ifndef LOCAL_TEST
#pragma GCC target ("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#endif // LOCAL_TEST
using namespace std;
// 型名の短縮
using ll = long long;
using pii = pair<int, int>; using pll = pair<ll, ll>;
using vi = vector<int>; using vvi = vector<vi>; using vvvi = vector<vvi>;
using vl = vector<ll>; using vvl = vector<vl>; using vvvl = vector<vvl>;
using vb = vector<bool>; using vvb = vector<vb>; using vvvb = vector<vvb>;
using vc = vector<char>; using vvc = vector<vc>; using vvvc = vector<vvc>;
using vd = vector<double>; using vvd = vector<vd>; using vvvd = vector<vvd>;
using vs = vector<string>; using vvs = vector<vector<string>>; using vvvs = vector<vector<vector<string>>>;
template<typename T> vector<vector<T>> vv(int h, int w, T val = T()) { return vector(h, vector<T>(w, val)); }
template<typename T> vector<vector<vector<T>>> vvv(int h1, int h2, int h3, T val = T()) { return vector(h1, vector(h2, vector<T>(h3, val))); }
template<typename T> vector<vector<vector<vector<T>>>> vvvv(int h1, int h2, int h3, int h4, T val = T()) { return vector(h1, vector(h2, vector(h3, vector<T>(h4, val)))); }
template <class T> using priority_queue_min = priority_queue<T, vector<T>, greater<T>>;
// 定数の定義
constexpr double PI = 3.14159265358979323;
constexpr int INF = 100100111; constexpr ll INFL = 3300300300300300491LL;
float EPS = 1e-8; double EPSL = 1e-16;
template<typename T> bool eq(const T x, const T y) { return x == y; }
template<> bool eq<double>(const double x, const double y) { return abs(x - y) < EPSL; }
template<> bool eq<float>(const float x, const float y) { return abs(x - y) < EPS; }
template<typename T> bool neq(const T x, const T y) { return !(eq<T>(x, y)); }
template<typename T> bool ge(const T x, const T y) { return (eq<T>(x, y) || (x > y)); }
template<typename T> bool le(const T x, const T y) { return (eq<T>(x, y) || (x < y)); }
template<typename T> bool gt(const T x, const T y) { return !(le<T>(x, y)); }
template<typename T> bool lt(const T x, const T y) { return !(ge<T>(x, y)); }
constexpr int MODINT998244353 = 998244353;
constexpr int MODINT1000000007 = 1000000007;
// 入出力高速化
struct Nyan { Nyan() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(18); } } nyan;
// 汎用マクロの定義
#define all(a) (a).begin(), (a).end()
#define sz(x) ((ll)(x).size())
#define rep1(n) for(ll dummy_iter = 0LL; dummy_iter < n; ++dummy_iter) // 0 から n-1 まで昇順
#define rep2(i, n) for(ll i = 0LL, i##_counter = 0LL; i##_counter < ll(n); ++(i##_counter), (i) = i##_counter) // 0 から n-1 まで昇順
#define rep3(i, s, t) for(ll i = ll(s), i##_counter = ll(s); i##_counter < ll(t); ++(i##_counter), (i) = (i##_counter)) // s から t まで昇順
#define rep4(i, s, t, step) for(ll i##_counter = step > 0 ? ll(s) : -ll(s), i##_end = step > 0 ? ll(t) : -ll(t), i##_step = abs(step), i = ll(s); i##_counter < i##_end; i##_counter += i##_step, i = step > 0 ? i##_counter : -i##_counter) // s から t まで stepずつ
#define overload4(a, b, c, d, e, ...) e
#define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__)
#define repe(a, v) for(auto& a : (v)) // v の全要素(変更可能)
#define smod(n, m) ((((n) % (m)) + (m)) % (m)) // 非負mod
#define sdiv(n, m) (((n) - smod(n, m)) / (m)) // 非負div
#define uniq(a) {sort(all(a)); (a).erase(unique(all(a)), (a).end());} // 重複除去
int Yes(bool b=true) { cout << (b ? "Yes\n" : "No\n"); return 0; };
int YES(bool b=true) { cout << (b ? "YES\n" : "NO\n"); return 0; };
int No(bool b=true) {return Yes(!b);};
int NO(bool b=true) {return YES(!b);};
template<typename T, size_t N> T max(array<T, N>& a) { return *max_element(all(a)); };
template<typename T, size_t N> T min(array<T, N>& a) { return *min_element(all(a)); };
template<typename T> T max(vector<T>& a) { return *max_element(all(a)); };
template<typename T> T min(vector<T>& a) { return *min_element(all(a)); };
template<typename T> vector<T> accum(const vector<T>& a) { vector<T> rev(sz(a)+1, 0); rep(i, sz(a)) rev[i+1] = rev[i] + a[i]; return rev; };
template<typename T> vector<T> vec_slice(const vector<T>& a, int l, int r) { vector<T> rev; rep(i, l, r) rev.push_back(a[i]); return rev; };
template<typename T> T sum(vector<T>& a, T zero = T(0)) { T rev = zero; rep(i, sz(a)) rev += a[i]; return rev; };
template<typename T> bool in_range(const T& val, const T& s, const T& t) { return s <= val && val < t; };
template <class T> inline vector<T>& operator--(vector<T>& v) { repe(x, v) --x; return v; }
template <class T> inline vector<T>& operator++(vector<T>& v) { repe(x, v) ++x; return v; }
// modでのpow
ll powm(ll a, ll n, ll mod=INFL) {
ll res = 1;
while (n > 0) {
if (n & 1) res = (res * a) % mod;
if (n > 1) a = (a * a) % mod;
n >>= 1;
}
return res;
}
// 整数Sqrt
ll sqrtll(ll x) {
assert(x >= 0);
ll rev = sqrt(x);
while(rev * rev > x) --rev;
while((rev+1) * (rev+1)<=x) ++rev;
return rev;
}
template <class T> inline bool chmax(T& M, const T& x) { if (M < x) { M = x; return true; } return false; } // 最大値を更新(更新されたら true を返す)
template <class T> inline bool chmin(T& m, const T& x) { if (m > x) { m = x; return true; } return false; } // 最小値を更新(更新されたら true を返す)
int digit(ll x, int d=10) { int rev=0; while (x > 0) { rev++; x /= d;}; return rev; } // xのd進数桁数
/**
* @brief std.hpp
* @docs docs/std/std.md
*/
//line 5 "/home/seekworser/.cpp_lib/competitive_library/atcoder/scc.hpp"
//line 5 "/home/seekworser/.cpp_lib/competitive_library/atcoder/internal_scc.hpp"
//line 5 "/home/seekworser/.cpp_lib/competitive_library/atcoder/internal_csr.hpp"
namespace atcoder {
namespace internal {
template <class E> struct csr {
std::vector<int> start;
std::vector<E> elist;
explicit csr(int n, const std::vector<std::pair<int, E>>& edges)
: start(n + 1), elist(edges.size()) {
for (auto e : edges) {
start[e.first + 1]++;
}
for (int i = 1; i <= n; i++) {
start[i] += start[i - 1];
}
auto counter = start;
for (auto e : edges) {
elist[counter[e.first]++] = e.second;
}
}
};
} // namespace internal
} // namespace atcoder
//line 7 "/home/seekworser/.cpp_lib/competitive_library/atcoder/internal_scc.hpp"
namespace atcoder {
namespace internal {
// Reference:
// R. Tarjan,
// Depth-First Search and Linear Graph Algorithms
struct scc_graph {
public:
explicit scc_graph(int n) : _n(n) {}
int num_vertices() { return _n; }
void add_edge(int from, int to) { edges.push_back({from, {to}}); }
// @return pair of (# of scc, scc id)
std::pair<int, std::vector<int>> scc_ids() {
auto g = csr<edge>(_n, edges);
int now_ord = 0, group_num = 0;
std::vector<int> visited, low(_n), ord(_n, -1), ids(_n);
visited.reserve(_n);
auto dfs = [&](auto self, int v) -> void {
low[v] = ord[v] = now_ord++;
visited.push_back(v);
for (int i = g.start[v]; i < g.start[v + 1]; i++) {
auto to = g.elist[i].to;
if (ord[to] == -1) {
self(self, to);
low[v] = std::min(low[v], low[to]);
} else {
low[v] = std::min(low[v], ord[to]);
}
}
if (low[v] == ord[v]) {
while (true) {
int u = visited.back();
visited.pop_back();
ord[u] = _n;
ids[u] = group_num;
if (u == v) break;
}
group_num++;
}
};
for (int i = 0; i < _n; i++) {
if (ord[i] == -1) dfs(dfs, i);
}
for (auto& x : ids) {
x = group_num - 1 - x;
}
return {group_num, ids};
}
std::vector<std::vector<int>> scc() {
auto ids = scc_ids();
int group_num = ids.first;
std::vector<int> counts(group_num);
for (auto x : ids.second) counts[x]++;
std::vector<std::vector<int>> groups(ids.first);
for (int i = 0; i < group_num; i++) {
groups[i].reserve(counts[i]);
}
for (int i = 0; i < _n; i++) {
groups[ids.second[i]].push_back(i);
}
return groups;
}
private:
int _n;
struct edge {
int to;
};
std::vector<std::pair<int, edge>> edges;
};
} // namespace internal
} // namespace atcoder
//line 7 "/home/seekworser/.cpp_lib/competitive_library/atcoder/scc.hpp"
namespace atcoder {
struct scc_graph {
public:
scc_graph() : internal(0) {}
explicit scc_graph(int n) : internal(n) {}
void add_edge(int from, int to) {
int n = internal.num_vertices();
assert(0 <= from && from < n);
assert(0 <= to && to < n);
internal.add_edge(from, to);
}
std::vector<std::vector<int>> scc() { return internal.scc(); }
private:
internal::scc_graph internal;
};
} // namespace atcoder
//line 3 "/home/seekworser/.cpp_lib/competitive_library/competitive/std/io.hpp"
// 演算子オーバーロード(プロトタイプ宣言)
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p);
template <class T> inline istream& operator>>(istream& is, vector<T>& v);
template <class T, class U> inline ostream& operator<<(ostream& os, const pair<T, U>& p);
template <class T> inline ostream& operator<<(ostream& os, const vector<T>& v);
template <typename T, typename S> ostream &operator<<(ostream &os, const map<T, S> &mp);
template <typename T> ostream &operator<<(ostream &os, const set<T> &st);
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &st);
template <typename T> ostream &operator<<(ostream &os, const unordered_set<T> &st);
template <typename T> ostream &operator<<(ostream &os, queue<T> q);
template <typename T> ostream &operator<<(ostream &os, deque<T> q);
template <typename T> ostream &operator<<(ostream &os, stack<T> st);
template <class T, class Container, class Compare> ostream &operator<<(ostream &os, priority_queue<T, Container, Compare> pq);
// 演算子オーバーロード
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p) { is >> p.first >> p.second; return is; }
template <class T> inline istream& operator>>(istream& is, vector<T>& v) { repe(x, v) is >> x; return is; }
template <class T, class U> inline ostream& operator<<(ostream& os, const pair<T, U>& p) { os << p.first << " " << p.second; return os; }
template <class T> inline ostream& operator<<(ostream& os, const vector<T>& v) { rep(i, sz(v)) { os << v.at(i); if (i != sz(v) - 1) os << " "; } return os; }
template <typename T, typename S> ostream &operator<<(ostream &os, const map<T, S> &mp) { for (auto &[key, val] : mp) { os << key << ":" << val << " "; } return os; }
template <typename T> ostream &operator<<(ostream &os, const set<T> &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++) { os << *itr << (i + 1 != (int)st.size() ? " " : ""); itr++; } return os; }
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++) { os << *itr << (i + 1 != (int)st.size() ? " " : ""); itr++; } return os; }
template <typename T> ostream &operator<<(ostream &os, const unordered_set<T> &st) { ll cnt = 0; for (auto &e : st) { os << e << (++cnt != (int)st.size() ? " " : ""); } return os; }
template <typename T> ostream &operator<<(ostream &os, queue<T> q) { while (q.size()) { os << q.front() << " "; q.pop(); } return os; }
template <typename T> ostream &operator<<(ostream &os, deque<T> q) { while (q.size()) { os << q.front() << " "; q.pop_front(); } return os; }
template <typename T> ostream &operator<<(ostream &os, stack<T> st) { while (st.size()) { os << st.top() << " "; st.pop(); } return os; }
template <class T, class Container, class Compare> ostream &operator<<(ostream &os, priority_queue<T, Container, Compare> pq) { while (pq.size()) { os << pq.top() << " "; pq.pop(); } return os; }
template <typename T> int print_sep_end(string sep, string end, const T& val) { (void)sep; cout << val << end; return 0; };
template <typename T1, typename... T2> int print_sep_end(string sep, string end, const T1 &val, const T2 &...remain) {
cout << val << sep;
print_sep_end(sep, end, remain...);
return 0;
};
template <typename... T> int print(const T &...args) { print_sep_end(" ", "\n", args...); return 0; };
template <typename... T> void flush() { cout << flush; };
template <typename... T> int print_and_flush(const T &...args) { print(args...); flush(); return 0; };
#define debug(...) debug_func(0, #__VA_ARGS__, __VA_ARGS__) // debug print
template <typename T> void input(T &a) { cin >> a; };
template <typename T1, typename... T2> void input(T1&a, T2 &...b) { cin >> a; input(b...); };
#ifdef LOCAL_TEST
template <typename T> void debug_func(int i, const T name) { (void)i; (void)name; cerr << endl; }
template <typename T1, typename T2, typename... T3> void debug_func(int i, const T1 &name, const T2 &a, const T3 &...b) {
int scope = 0;
for ( ; (scope != 0 || name[i] != ',') && name[i] != '\0'; i++ ) {
cerr << name[i];
if (name[i] == '(' || name[i] == '{') scope++;
if (name[i] == ')' || name[i] == '}') scope--;
}
cerr << ":" << a << " ";
debug_func(i + 1, name, b...);
}
template <typename T1, typename T2, typename... T3> void debug_func(int i, const T1 &name, T2 &a, T3 &...b) {
int scope = 0;
for ( ; (scope != 0 || name[i] != ',') && name[i] != '\0'; i++ ) {
cerr << name[i];
if (name[i] == '(' || name[i] == '{') scope++;
if (name[i] == ')' || name[i] == '}') scope--;
}
cerr << ":" << a << " ";
debug_func(i + 1, name, b...);
}
#endif
#ifndef LOCAL_TEST
template <typename... T>
void debug_func(T &...) {}
template <typename... T>
void debug_func(const T &...) {}
#endif
/**
* @brief io.hpp
* @docs docs/std/io.md
*/
//line 72 "answer.cpp"
#endif
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3800kb
input:
3 12 5 1 5 9 11 7 8 6 6 12 12 4 3 1 1 4 4 2 3 2 2 1 1 2 2
output:
0 1 2 3 4 1 1 7 1 9 10 1 2 0 2 2 IMPOSSIBLE
result:
ok Correct. (3 test cases)
Test #2:
score: 0
Accepted
time: 6ms
memory: 3864kb
input:
10 1 1 1 1 100000 1 1 100000 12 4 1 3 4 6 7 9 10 12 6 3 4 6 2 3 1 1 8999 3 1 3000 3001 6000 6001 8999 14 4 1 3 4 6 7 10 11 14 17 5 1 3 4 6 7 10 11 14 15 17 19999 2 1 9999 10000 19999 1 1 1 1 5 3 1 1 2 3 4 5
output:
0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok Correct. (10 test cases)
Test #3:
score: 0
Accepted
time: 5ms
memory: 3564kb
input:
5 11 5 1 3 4 6 7 8 9 10 11 11 39998 4 1 10000 10001 20000 20001 30000 30001 39998 49000 5 1 10000 39999 49000 10001 20000 20001 30000 30001 39998 16 5 1 1 2 3 4 6 7 11 12 16 10 5 1 2 3 4 5 6 7 8 9 10
output:
0 1 2 1 4 5 1 7 1 9 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 ...
result:
ok Correct. (5 test cases)
Test #4:
score: 0
Accepted
time: 15ms
memory: 3592kb
input:
10000 20 6 17 20 7 9 1 3 4 6 10 12 13 16 20 12 7 7 4 4 10 10 8 8 3 3 1 1 6 6 2 2 5 5 11 11 12 20 9 9 20 16 11 11 5 6 9 9 2 2 12 12 1 1 18 20 8 8 15 15 13 13 16 17 10 10 14 14 3 3 4 4 7 7 20 16 6 7 10 10 13 13 18 18 19 19 14 14 1 1 20 20 8 8 4 5 9 9 2 3 12 12 11 11 16 17 15 15 20 5 1 1 6 6 7 12 13 20...
output:
IMPOSSIBLE 12 12 12 12 12 12 12 12 12 12 12 0 12 13 14 15 16 17 18 19 18 18 18 18 18 5 18 18 18 18 18 18 18 18 18 18 16 0 18 19 IMPOSSIBLE 13 13 2 3 4 13 13 7 8 9 10 11 0 13 14 15 16 17 18 19 IMPOSSIBLE 9 9 2 3 4 5 6 7 0 9 10 11 12 13 14 15 16 17 18 19 10 1 2 3 10 5 6 7 10 0 10 11 12 13 14 15 16 17 ...
result:
ok Correct. (10000 test cases)
Test #5:
score: 0
Accepted
time: 18ms
memory: 3800kb
input:
20000 13 12 12 12 7 7 1 1 5 5 9 9 8 8 13 13 4 4 3 3 6 6 10 11 2 2 16 8 4 4 5 5 1 1 6 6 7 7 3 3 8 16 2 2 20 17 19 19 1 1 17 18 14 14 4 4 13 13 7 7 5 5 11 11 15 15 16 16 20 20 12 12 9 10 8 8 2 3 6 6 17 9 3 4 2 2 9 10 7 8 5 6 11 12 1 1 15 17 13 14 6 2 2 6 1 1 1 1 1 1 10 2 5 10 1 4 17 17 3 3 12 12 15 15...
output:
10 10 10 10 10 10 10 10 10 0 10 10 10 8 8 8 8 8 8 8 0 8 9 10 11 12 13 14 15 IMPOSSIBLE 15 15 15 3 15 5 15 7 15 9 15 11 15 13 0 15 16 2 0 2 3 4 5 0 5 1 2 3 0 5 6 7 8 9 IMPOSSIBLE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 IMPOSSIBLE IMPOSSIBLE 5 5 5 5 0 5 6 7 8 9 10 11 12 13 14 15 0 1 IMPOSSIBLE IMPOSSIBLE 2 0 ...
result:
ok Correct. (20000 test cases)
Test #6:
score: 0
Accepted
time: 21ms
memory: 3800kb
input:
50000 1 1 1 1 4 3 1 1 4 4 2 3 9 9 1 1 5 5 8 8 9 9 7 7 2 2 3 3 6 6 4 4 4 2 1 2 3 4 2 2 1 1 2 2 1 1 1 1 10 2 1 7 8 10 8 8 4 4 5 5 6 6 8 8 3 3 1 1 2 2 7 7 7 7 7 7 4 4 5 5 2 2 3 3 1 1 6 6 10 2 8 10 1 7 8 1 1 8 2 1 1 2 9 4 1 2 5 6 7 9 3 4 7 1 1 7 7 2 1 1 2 7 4 2 1 1 2 4 6 3 3 6 1 1 2 2 3 3 3 3 1 1 2 2 1 ...
output:
0 2 0 2 2 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 0 1 2 3 4 5 6 1 8 9 IMPOSSIBLE IMPOSSIBLE 0 1 2 3 4 5 6 1 8 9 0 1 2 3 4 5 6 7 0 1 7 1 7 3 7 5 0 7 8 0 1 2 3 4 5 6 2 0 2 3 4 5 6 2 0 2 3 3 3 0 3 4 5 IMPOSSIBLE 0 3 3 0 3 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE 0 1 1 1 3 3 0 3 3 IMPOSSIBL...
result:
ok Correct. (50000 test cases)
Test #7:
score: 0
Accepted
time: 14ms
memory: 3872kb
input:
100 2619 693 286 286 81 81 552 552 397 397 24 24 414 414 378 378 660 660 538 538 125 125 190 190 585 585 180 180 564 564 218 218 158 158 425 425 189 189 94 94 29 29 678 678 543 543 352 352 659 659 467 467 403 403 298 298 517 517 196 196 156 156 278 278 259 259 417 417 499 499 246 246 195 195 380 380...
output:
693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 693 ...
result:
ok Correct. (100 test cases)
Test #8:
score: 0
Accepted
time: 17ms
memory: 5064kb
input:
100 53984 965 9577 9632 53593 53648 17305 17360 40321 40376 37465 37520 45753 45808 52921 52976 21281 21336 44241 44296 17921 17976 40545 40600 7897 7952 9689 9744 32089 32144 43345 43400 46817 46872 4817 4872 24585 24640 41889 41944 36065 36120 3585 3640 1486 1540 29793 29848 8065 8120 43401 43456 ...
output:
IMPOSSIBLE IMPOSSIBLE 35753 1 2 3 4 5 35753 35753 8 35753 10 11 12 13 35753 35753 35753 35753 18 35753 35753 35753 22 35753 35753 35753 35753 35753 35753 29 30 35753 32 35753 35753 35 36 35753 35753 39 40 41 42 43 44 45 46 47 35753 49 35753 35753 35753 35753 54 55 56 35753 58 59 35753 35753 62 63 64...
result:
ok Correct. (100 test cases)
Test #9:
score: 0
Accepted
time: 38ms
memory: 6728kb
input:
2 100000 72281 52926 52926 1645 1646 33266 33266 88480 88480 16983 16983 29975 29977 32528 32528 89186 89186 5810 5810 90512 90512 8859 8859 22671 22671 51648 51649 26506 26506 99017 99018 64526 64526 61453 61454 73914 73914 27338 27339 43510 43510 22298 22300 59714 59714 64394 64395 71955 71956 481...
output:
5636 5636 2 3 5636 5636 5636 7 5636 5636 10 11 5636 5636 5636 5636 16 5636 18 19 20 5636 5636 23 24 5636 26 5636 5636 5636 5636 5636 5636 5636 5636 5636 36 5636 38 39 5636 5636 5636 5636 5636 45 5636 47 5636 49 50 5636 5636 5636 5636 5636 5636 5636 5636 5636 60 5636 5636 5636 5636 5636 66 67 5636 56...
result:
ok Correct. (2 test cases)
Test #10:
score: 0
Accepted
time: 26ms
memory: 3616kb
input:
100000 2 1 1 2 2 1 1 2 2 2 2 2 1 1 2 2 2 2 1 1 2 2 1 1 2 2 2 2 2 2 1 1 2 2 1 1 2 2 2 2 1 1 2 2 2 2 1 1 2 2 2 2 2 2 1 1 2 2 2 2 1 1 2 2 1 1 2 2 2 2 1 1 2 2 2 2 2 2 1 1 2 1 1 2 2 2 2 2 1 1 2 2 2 2 1 1 2 2 2 2 1 1 2 1 1 2 2 2 1 1 2 2 2 2 1 1 2 2 2 1 1 2 2 2 2 2 1 1 2 2 2 2 1 1 2 2 1 1 2 2 2 1 1 2 2 2 1...
output:
0 1 0 1 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0...
result:
ok Correct. (100000 test cases)
Test #11:
score: 0
Accepted
time: 20ms
memory: 3652kb
input:
100000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok Correct. (100000 test cases)
Test #12:
score: 0
Accepted
time: 28ms
memory: 3740kb
input:
100000 2 1 1 2 3 1 1 3 5 2 1 1 2 5 4 4 2 2 4 4 3 3 1 1 3 3 1 1 3 3 2 2 5 1 1 5 1 1 1 1 3 2 1 1 2 3 5 5 5 5 2 2 3 3 4 4 1 1 3 3 3 3 1 1 2 2 5 4 3 4 1 1 2 2 5 5 4 3 2 2 1 1 3 4 1 1 1 1 4 1 1 4 5 4 3 4 2 2 1 1 5 5 3 1 1 3 3 3 1 1 3 3 2 2 5 1 1 5 1 1 1 1 2 2 2 2 1 1 5 1 1 5 1 1 1 1 2 2 2 2 1 1 4 2 4 4 1...
output:
0 1 0 1 2 2 0 2 3 4 IMPOSSIBLE IMPOSSIBLE 0 1 2 3 4 0 2 0 2 IMPOSSIBLE IMPOSSIBLE 3 3 0 3 3 3 3 0 3 0 0 1 2 3 3 3 0 3 3 0 1 2 IMPOSSIBLE 0 1 2 3 4 0 IMPOSSIBLE 0 1 2 3 4 0 IMPOSSIBLE 0 1 2 1 3 3 0 3 4 0 1 1 IMPOSSIBLE IMPOSSIBLE 0 3 1 0 3 4 0 IMPOSSIBLE 3 3 0 3 4 0 1 2 3 3 0 3 0 0 IMPOSSIBLE 0 1 2 1...
result:
ok Correct. (100000 test cases)
Test #13:
score: 0
Accepted
time: 15ms
memory: 3680kb
input:
5000 50 26 5 6 9 10 1 1 23 24 43 44 19 20 29 30 2 2 17 18 47 48 3 4 35 36 27 28 25 26 49 50 31 32 45 46 15 16 39 40 21 22 11 12 13 14 37 38 33 34 7 8 41 42 86 12 17 20 33 36 41 86 1 3 4 6 13 16 25 28 37 40 29 32 21 24 7 9 10 12 59 35 5 5 6 6 22 22 31 31 32 32 25 25 21 21 20 20 26 26 2 2 34 34 3 3 35...
output:
IMPOSSIBLE 41 1 2 41 4 5 41 7 8 41 10 11 41 13 14 15 41 17 18 19 41 21 22 23 41 25 26 27 41 29 30 31 41 33 34 35 41 37 38 39 0 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 35 35 35 35 35 35 35 35 35 35 35 35 35...
result:
ok Correct. (5000 test cases)
Test #14:
score: 0
Accepted
time: 11ms
memory: 3700kb
input:
5000 335 22 13 18 134 140 85 91 50 56 7 12 31 36 113 119 71 77 106 112 1 6 37 42 64 70 92 98 43 49 120 126 127 133 99 105 25 30 141 335 19 24 57 63 78 84 475 21 40 42 22 24 37 39 16 18 7 9 31 33 49 51 43 45 52 54 19 21 1 2 55 57 10 12 5 6 58 475 28 30 13 15 25 27 34 36 3 4 46 48 252 159 138 138 77 7...
output:
141 1 2 3 4 5 141 7 8 9 10 11 141 13 14 15 16 17 141 19 20 21 22 23 141 25 26 27 28 29 141 31 32 33 34 35 141 37 38 39 40 41 141 43 44 45 46 47 48 141 50 51 52 53 54 55 141 57 58 59 60 61 62 141 64 65 66 67 68 69 141 71 72 73 74 75 76 141 78 79 80 81 82 83 141 85 86 87 88 89 90 141 92 93 94 95 96 97...
result:
ok Correct. (5000 test cases)
Test #15:
score: 0
Accepted
time: 11ms
memory: 3720kb
input:
1000 89 19 17 18 7 8 11 12 1 1 27 28 35 89 13 14 15 16 25 26 9 10 31 32 3 4 33 34 29 30 19 20 23 24 5 6 21 22 2 2 962 187 886 890 361 365 376 380 766 770 901 905 181 185 626 630 921 925 86 90 416 420 281 285 506 510 171 175 41 45 776 780 441 445 491 495 341 345 631 635 141 145 356 360 891 895 231 23...
output:
35 35 35 3 35 5 35 7 35 9 35 11 35 13 35 15 35 17 35 19 35 21 35 23 35 25 35 27 35 29 35 31 35 33 0 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 926 1 2 3 926 5 6 7 926 9 10 11 926 13...
result:
ok Correct. (1000 test cases)
Test #16:
score: 0
Accepted
time: 14ms
memory: 3688kb
input:
500 4037 286 1756 1768 2770 2782 3095 3107 1405 1417 2705 2717 2913 2925 1847 1859 482 494 807 819 2744 2756 2822 2834 2276 2288 3238 3250 1106 1118 2055 2067 3056 3068 2328 2340 2146 2158 1249 1261 1015 1027 2224 2236 1613 1625 1717 1729 222 234 3329 3341 1795 1807 2354 2366 37 48 3082 3094 2068 20...
output:
3693 1 2 3 4 5 6 7 8 9 10 11 3693 13 14 15 16 17 18 19 20 21 22 23 3693 25 26 27 28 29 30 31 32 33 34 35 3693 37 38 39 40 41 42 43 44 45 46 47 3693 49 50 51 52 53 54 55 56 57 58 59 3693 61 62 63 64 65 66 67 68 69 70 71 3693 73 74 75 76 77 78 79 80 81 82 83 3693 85 86 87 88 89 90 91 92 93 94 95 3693 ...
result:
ok Correct. (500 test cases)
Extra Test:
score: 0
Extra Test Passed