QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#116484 | #4879. Standard Problem | hos_lyric | AC ✓ | 325ms | 26808kb | C++14 | 11.7kb | 2023-06-29 13:08:11 | 2023-06-29 13:08:14 |
Judging History
answer
#include <cassert>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
using namespace std;
using Int = long long;
template <class T1, class T2> ostream &operator<<(ostream &os, const pair<T1, T2> &a) { return os << "(" << a.first << ", " << a.second << ")"; };
template <class T> ostream &operator<<(ostream &os, const vector<T> &as) { const int sz = as.size(); os << "["; for (int i = 0; i < sz; ++i) { if (i >= 256) { os << ", ..."; break; } if (i > 0) { os << ", "; } os << as[i]; } return os << "]"; }
template <class T> void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << " "; cerr << endl; }
template <class T> bool chmin(T &t, const T &f) { if (t > f) { t = f; return true; } return false; }
template <class T> bool chmax(T &t, const T &f) { if (t < f) { t = f; return true; } return false; }
////////////////////////////////////////////////////////////////////////////////
template <unsigned M_> struct ModInt {
static constexpr unsigned M = M_;
unsigned x;
constexpr ModInt() : x(0U) {}
constexpr ModInt(unsigned x_) : x(x_ % M) {}
constexpr ModInt(unsigned long long x_) : x(x_ % M) {}
constexpr ModInt(int x_) : x(((x_ %= static_cast<int>(M)) < 0) ? (x_ + static_cast<int>(M)) : x_) {}
constexpr ModInt(long long x_) : x(((x_ %= static_cast<long long>(M)) < 0) ? (x_ + static_cast<long long>(M)) : x_) {}
ModInt &operator+=(const ModInt &a) { x = ((x += a.x) >= M) ? (x - M) : x; return *this; }
ModInt &operator-=(const ModInt &a) { x = ((x -= a.x) >= M) ? (x + M) : x; return *this; }
ModInt &operator*=(const ModInt &a) { x = (static_cast<unsigned long long>(x) * a.x) % M; return *this; }
ModInt &operator/=(const ModInt &a) { return (*this *= a.inv()); }
ModInt pow(long long e) const {
if (e < 0) return inv().pow(-e);
ModInt a = *this, b = 1U; for (; e; e >>= 1) { if (e & 1) b *= a; a *= a; } return b;
}
ModInt inv() const {
unsigned a = M, b = x; int y = 0, z = 1;
for (; b; ) { const unsigned q = a / b; const unsigned c = a - q * b; a = b; b = c; const int w = y - static_cast<int>(q) * z; y = z; z = w; }
assert(a == 1U); return ModInt(y);
}
ModInt operator+() const { return *this; }
ModInt operator-() const { ModInt a; a.x = x ? (M - x) : 0U; return a; }
ModInt operator+(const ModInt &a) const { return (ModInt(*this) += a); }
ModInt operator-(const ModInt &a) const { return (ModInt(*this) -= a); }
ModInt operator*(const ModInt &a) const { return (ModInt(*this) *= a); }
ModInt operator/(const ModInt &a) const { return (ModInt(*this) /= a); }
template <class T> friend ModInt operator+(T a, const ModInt &b) { return (ModInt(a) += b); }
template <class T> friend ModInt operator-(T a, const ModInt &b) { return (ModInt(a) -= b); }
template <class T> friend ModInt operator*(T a, const ModInt &b) { return (ModInt(a) *= b); }
template <class T> friend ModInt operator/(T a, const ModInt &b) { return (ModInt(a) /= b); }
explicit operator bool() const { return x; }
bool operator==(const ModInt &a) const { return (x == a.x); }
bool operator!=(const ModInt &a) const { return (x != a.x); }
friend std::ostream &operator<<(std::ostream &os, const ModInt &a) { return os << a.x; }
};
////////////////////////////////////////////////////////////////////////////////
constexpr unsigned MO = 998244353;
using Mint = ModInt<MO>;
// T: monoid representing information of an interval.
// T() should return the identity.
// T(S s) should represent a single element of the array.
// T::push(T &l, T &r) should push the lazy update.
// T::merge(const T &l, const T &r) should merge two intervals.
template <class T> struct SegmentTreeRange {
int logN, n;
vector<T> ts;
SegmentTreeRange() {}
explicit SegmentTreeRange(int n_) {
for (logN = 0, n = 1; n < n_; ++logN, n <<= 1) {}
ts.resize(n << 1);
}
template <class S> explicit SegmentTreeRange(const vector<S> &ss) {
const int n_ = ss.size();
for (logN = 0, n = 1; n < n_; ++logN, n <<= 1) {}
ts.resize(n << 1);
for (int i = 0; i < n_; ++i) at(i) = T(ss[i]);
build();
}
T &at(int i) {
return ts[n + i];
}
void build() {
for (int u = n; --u; ) merge(u);
}
inline void push(int u) {
ts[u].push(ts[u << 1], ts[u << 1 | 1]);
}
inline void merge(int u) {
ts[u].merge(ts[u << 1], ts[u << 1 | 1]);
}
// Applies T::f(args...) to [a, b).
template <class F, class... Args>
void ch(int a, int b, F f, Args &&... args) {
assert(0 <= a); assert(a <= b); assert(b <= n);
if (a == b) return;
a += n; b += n;
for (int h = logN; h; --h) {
const int aa = a >> h, bb = b >> h;
if (aa == bb) {
if ((aa << h) != a || (bb << h) != b) push(aa);
} else {
if ((aa << h) != a) push(aa);
if ((bb << h) != b) push(bb);
}
}
for (int aa = a, bb = b; aa < bb; aa >>= 1, bb >>= 1) {
if (aa & 1) (ts[aa++].*f)(args...);
if (bb & 1) (ts[--bb].*f)(args...);
}
for (int h = 1; h <= logN; ++h) {
const int aa = a >> h, bb = b >> h;
if (aa == bb) {
if ((aa << h) != a || (bb << h) != b) merge(aa);
} else {
if ((aa << h) != a) merge(aa);
if ((bb << h) != b) merge(bb);
}
}
}
// Calculates the product for [a, b).
T get(int a, int b) {
assert(0 <= a); assert(a <= b); assert(b <= n);
if (a == b) return T();
a += n; b += n;
for (int h = logN; h; --h) {
const int aa = a >> h, bb = b >> h;
if (aa == bb) {
if ((aa << h) != a || (bb << h) != b) push(aa);
} else {
if ((aa << h) != a) push(aa);
if ((bb << h) != b) push(bb);
}
}
T prodL, prodR, t;
for (int aa = a, bb = b; aa < bb; aa >>= 1, bb >>= 1) {
if (aa & 1) { t.merge(prodL, ts[aa++]); prodL = t; }
if (bb & 1) { t.merge(ts[--bb], prodR); prodR = t; }
}
t.merge(prodL, prodR);
return t;
}
// Calculates T::f(args...) of a monoid type for [a, b).
// op(-, -) should calculate the product.
// e() should return the identity.
template <class Op, class E, class F, class... Args>
#if __cplusplus >= 201402L
auto
#else
decltype((std::declval<T>().*F())())
#endif
get(int a, int b, Op op, E e, F f, Args &&... args) {
assert(0 <= a); assert(a <= b); assert(b <= n);
if (a == b) return e();
a += n; b += n;
for (int h = logN; h; --h) {
const int aa = a >> h, bb = b >> h;
if (aa == bb) {
if ((aa << h) != a || (bb << h) != b) push(aa);
} else {
if ((aa << h) != a) push(aa);
if ((bb << h) != b) push(bb);
}
}
auto prodL = e(), prodR = e();
for (int aa = a, bb = b; aa < bb; aa >>= 1, bb >>= 1) {
if (aa & 1) prodL = op(prodL, (ts[aa++].*f)(args...));
if (bb & 1) prodR = op((ts[--bb].*f)(args...), prodR);
}
return op(prodL, prodR);
}
// Find min b s.t. T::f(args...) returns true,
// when called for the partition of [a, b) from left to right.
// Returns n + 1 if there is no such b.
template <class F, class... Args>
int findRight(int a, F f, Args &&... args) {
assert(0 <= a); assert(a <= n);
if ((T().*f)(args...)) return a;
if (a == n) return n + 1;
a += n;
for (int h = logN; h; --h) push(a >> h);
for (; ; a >>= 1) if (a & 1) {
if ((ts[a].*f)(args...)) {
for (; a < n; ) {
push(a);
if (!(ts[a <<= 1].*f)(args...)) ++a;
}
return a - n + 1;
}
++a;
if (!(a & (a - 1))) return n + 1;
}
}
// Find max a s.t. T::f(args...) returns true,
// when called for the partition of [a, b) from right to left.
// Returns -1 if there is no such a.
template <class F, class... Args>
int findLeft(int b, F f, Args &&... args) {
assert(0 <= b); assert(b <= n);
if ((T().*f)(args...)) return b;
if (b == 0) return -1;
b += n;
for (int h = logN; h; --h) push((b - 1) >> h);
for (; ; b >>= 1) if ((b & 1) || b == 2) {
if ((ts[b - 1].*f)(args...)) {
for (; b <= n; ) {
push(b - 1);
if (!(ts[(b <<= 1) - 1].*f)(args...)) --b;
}
return b - n - 1;
}
--b;
if (!(b & (b - 1))) return -1;
}
}
};
////////////////////////////////////////////////////////////////////////////////
constexpr Int INF = 1001001001001001001LL;
struct Node {
// (<- a) += b
Int mx, lzA, lzB;
Mint way;
int lzWayA;
Mint lzWayB;
Node() : mx(-INF), lzA(-1), lzB(0), way(0), lzWayA(-1), lzWayB(0) {}
void push(Node &l, Node &r) {
if (~lzA) {
l.change(lzA);
r.change(lzA);
lzA = -1;
}
if (lzB) {
l.add(lzB);
r.add(lzB);
lzB = 0;
}
if (~lzWayA) {
l.changeWay(lzWayA);
r.changeWay(lzWayA);
lzWayA = -1;
}
if (lzWayB) {
l.addWay(lzWayB);
r.addWay(lzWayB);
lzWayB = 0;
}
}
void merge(const Node &l, const Node &r) {
mx = max(l.mx, r.mx);
way = l.way + r.way;
}
void change(Int val) {
mx = val;
lzA = val;
lzB = 0;
}
void add(Int val) {
mx += val;
lzB += val;
}
void changeWay(const Mint &w) {
way = w;
lzWayA = w.x;
lzWayB = 0;
}
void addWay(const Mint &w) {
way += w;
lzWayB += w;
}
bool check(Int tar) {
return (mx >= tar);
}
};
int N, M;
vector<int> L, R;
vector<Int> C;
pair<Int, Mint> brute() {
Int mx = -1;
Mint way = 0;
for (int p = 0; p < 1 << N; ++p) {
bool ok = true;
Int c = 0;
int last = -1;
for (int i = 0; i < N; ++i) if (p >> i & 1) {
ok = ok && (last < R[i]);
c += C[i];
chmax(last, L[i]);
}
if (ok) {
if (chmax(mx, c)) {
way = 0;
}
if (mx == c) {
way += 1;
}
}
}
return make_pair(mx, way);
}
int main() {
for (int numCases; ~scanf("%d", &numCases); ) { for (int caseId = 1; caseId <= numCases; ++caseId) {
scanf("%d%d", &N, &M);
L.resize(N);
R.resize(N);
C.resize(N);
for (int i = 0; i < N; ++i) {
scanf("%d%d%lld", &L[i], &R[i], &C[i]);
--L[i];
}
SegmentTreeRange<Node> seg(M);
for (int x = 0; x < M; ++x) {
seg.at(x).mx = 0;
seg.at(x).way = 1;
}
seg.build();
for (int i = 0; i < N; ++i) {
seg.ch(L[i], R[i], &Node::add, C[i]);
const auto res = seg.get(R[i] - 1, R[i]);
const int pos0 = seg.findRight(R[i], &Node::check, res.mx) - 1;
const int pos1 = seg.findRight(R[i], &Node::check, res.mx + 1) - 1;
seg.ch(R[i], pos0, &Node::change, res.mx);
seg.ch(R[i], pos0, &Node::changeWay, res.way);
seg.ch(pos0, pos1, &Node::addWay, res.way);
// for(int x=0;x<M;++x){const auto re=seg.get(x,x+1);cerr<<make_pair(re.mx,re.way)<<" ";}cerr<<endl;
}
const auto ans = seg.get(M - 1, M);
printf("%lld %u\n", ans.mx, ans.way.x);
#ifdef LOCAL
const auto brt=brute();
if(brt!=make_pair(ans.mx,ans.way)){
cerr<<"N = "<<N<<", M = "<<M<<endl;
cerr<<"L = "<<L<<endl;
cerr<<"R = "<<R<<endl;
cerr<<"C = "<<C<<endl;
cerr<<"brt = "<<brt<<endl;
cerr<<"ans = "<<make_pair(ans.mx,ans.way)<<endl;
}
assert(brt.first==ans.mx);
assert(brt.second==ans.way);
#endif
}
#ifndef LOCAL
break;
#endif
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3656kb
input:
2 3 4 1 2 1 2 3 1 2 2 1 2 5 1 4 3 2 5 3
output:
3 1 6 1
result:
ok 4 number(s): "3 1 6 1"
Test #2:
score: 0
Accepted
time: 1ms
memory: 3656kb
input:
30 3 3 1 3 1 1 3 1 1 3 1 3 3 1 2 1 1 3 1 1 3 1 3 3 2 2 1 1 3 1 1 3 1 3 3 1 3 1 1 2 1 1 3 1 3 3 2 3 1 1 2 1 1 3 1 3 3 2 2 1 1 3 1 1 3 1 3 3 2 2 1 1 2 1 1 3 1 3 3 1 3 1 2 3 1 1 3 1 3 3 2 3 1 1 3 1 2 2 1 3 3 1 2 1 1 2 1 1 2 1 3 3 1 3 1 1 3 1 1 3 1 3 3 1 3 1 1 2 1 1 3 1 3 3 2 3 1 1 2 1 1 3 1 3 3 1 3 1 1...
output:
3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 2 2 3 1 3 1 3 1 3 1 2 2 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1
result:
ok 60 numbers
Test #3:
score: 0
Accepted
time: 1ms
memory: 3728kb
input:
20 5 5 1 5 1 1 5 1 1 4 1 1 5 1 1 5 1 5 5 2 4 1 1 5 1 1 5 1 2 4 1 2 4 1 5 5 2 4 1 1 5 1 1 5 1 2 5 1 1 3 1 5 5 1 5 1 1 5 1 2 3 1 1 5 1 1 4 1 5 5 1 4 1 1 4 1 2 5 1 1 3 1 2 4 1 5 5 2 4 1 3 3 1 1 3 1 2 4 1 4 4 1 5 5 3 3 1 1 4 1 3 3 1 2 5 1 2 5 1 5 5 2 4 1 2 3 1 4 4 1 2 4 1 2 4 1 5 5 3 3 1 3 3 1 2 4 1 1 4...
output:
5 1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 4 1 5 1 5 1 5 1 5 1 5 1 4 1 5 1 5 1 5 1 5 1 5 1
result:
ok 40 numbers
Test #4:
score: 0
Accepted
time: 1ms
memory: 3656kb
input:
10 10 10 1 10 1 1 10 1 1 9 1 2 7 1 1 9 1 1 10 1 1 9 1 1 9 1 1 9 1 1 10 1 10 10 1 8 1 1 10 1 2 10 1 3 10 1 1 10 1 4 10 1 1 8 1 1 10 1 1 9 1 1 10 1 10 10 1 7 1 4 7 1 1 8 1 4 6 1 1 10 1 2 10 1 2 10 1 1 10 1 3 10 1 5 7 1 10 10 3 7 1 1 10 1 1 6 1 1 9 1 2 9 1 2 6 1 2 9 1 1 10 1 2 10 1 4 8 1 10 10 3 8 1 4 ...
output:
10 1 10 1 10 1 10 1 10 1 10 1 10 1 9 1 9 1 10 1
result:
ok 20 numbers
Test #5:
score: 0
Accepted
time: 66ms
memory: 3656kb
input:
10000 20 20 2 3 1 2 3 1 1 6 1 1 6 1 1 2 1 1 1 1 1 5 1 4 4 1 1 2 1 2 4 1 1 2 1 1 6 1 1 2 1 1 9 1 1 4 1 8 11 1 2 11 1 1 8 1 2 4 1 2 7 1 20 20 4 8 1 1 2 1 2 3 1 2 2 1 1 5 1 3 7 1 1 4 1 2 7 1 3 4 1 1 2 1 5 5 1 1 6 1 1 7 1 1 8 1 1 1 1 1 1 1 3 3 1 2 3 1 1 1 1 1 2 1 20 20 1 1 1 3 11 1 1 8 1 2 9 1 2 7 1 3 9...
output:
17 1 13 1 17 2 12 6 16 1 20 1 20 1 19 1 17 1 13 9 13 4 14 3 12 1 11 3 12 9 19 2 20 1 20 1 19 2 13 4 13 2 13 7 16 2 16 1 18 1 20 1 20 1 20 1 16 5 18 1 13 2 14 4 13 2 14 2 13 6 20 1 20 1 19 1 17 2 15 2 13 4 15 2 16 1 13 2 12 6 20 1 20 1 20 1 18 1 14 4 15 2 15 2 13 5 13 6 16 1 20 1 20 1 20 1 20 1 18 1 ...
result:
ok 20000 numbers
Test #6:
score: 0
Accepted
time: 122ms
memory: 3676kb
input:
1000 200 200 1 21 1 93 108 1 52 55 1 61 67 1 1 23 1 70 72 1 1 8 1 21 78 1 1 20 1 6 31 1 71 85 1 4 57 1 9 15 1 63 101 1 48 60 1 93 100 1 55 77 1 94 96 1 59 59 1 3 4 1 6 7 1 3 21 1 14 20 1 88 93 1 46 52 1 1 29 1 1 19 1 45 46 1 3 35 1 3 16 1 79 105 1 84 104 1 16 17 1 41 48 1 4 7 1 2 48 1 101 117 1 14 7...
output:
74 24 68 16 73 12 88 12 111 2 198 1 195 1 190 3 177 2 140 9 70 140 74 14 84 4 93 32 109 14 196 3 197 4 195 1 175 1 130 28 74 124 68 6 84 2 104 8 119 2 194 2 194 2 194 1 172 6 135 4 62 360 74 36 82 180 87 6 107 4 197 2 197 1 189 2 177 2 139 2 71 8 76 20 82 8 102 2 107 208 196 2 198 1 192 3 178 3 135 ...
result:
ok 2000 numbers
Test #7:
score: 0
Accepted
time: 283ms
memory: 16464kb
input:
1 200000 70000 3758 4743 1 33161 33877 1 24037 24952 1 33131 33134 1 24741 25130 1 12964 13639 1 32062 32778 1 12046 12449 1 28229 29159 1 12021 12282 1 5329 6033 1 16581 16923 1 30368 31177 1 29343 29965 1 32647 33027 1 25775 26193 1 878 1026 1 17927 17950 1 16554 16592 1 30029 30096 1 19536 19742 ...
output:
4170 745614878
result:
ok 2 number(s): "4170 745614878"
Test #8:
score: 0
Accepted
time: 289ms
memory: 26808kb
input:
1 200000 200000 78834 78835 1 80528 80530 1 47499 47503 1 65196 65198 1 36003 36005 1 79144 79146 1 91460 91460 1 87949 87951 1 97054 97054 1 99216 99219 1 1043 1046 1 25088 25089 1 59424 59428 1 78742 78744 1 46264 46265 1 44746 44750 1 84877 84881 1 24091 24094 1 35772 35774 1 77841 77841 1 96537 ...
output:
898 862947721
result:
ok 2 number(s): "898 862947721"
Test #9:
score: 0
Accepted
time: 298ms
memory: 26780kb
input:
1 200000 200000 70228 70241 1 2243 2290 1 37711 37751 1 65609 65630 1 35069 35114 1 55461 55502 1 45322 45352 1 63193 63237 1 47993 48004 1 77797 77807 1 65933 65943 1 50756 50758 1 89846 89848 1 40757 40796 1 32542 32568 1 71472 71518 1 36752 36753 1 78477 78511 1 64720 64750 1 17369 17372 1 51635 ...
output:
958 258160284
result:
ok 2 number(s): "958 258160284"
Test #10:
score: 0
Accepted
time: 325ms
memory: 26712kb
input:
1 200000 200000 75340 75924 1 89847 90265 1 59883 60818 1 26303 26836 1 83285 84012 1 51579 51933 1 83631 83730 1 34162 35024 1 82604 83469 1 22334 22878 1 39351 40150 1 74106 74554 1 6193 6244 1 16427 16530 1 20013 20625 1 34653 35093 1 83885 84698 1 66234 67215 1 35548 36129 1 998 1540 1 86220 871...
output:
2172 380312816
result:
ok 2 number(s): "2172 380312816"
Test #11:
score: 0
Accepted
time: 173ms
memory: 26688kb
input:
1 200000 200000 1 4 1 3 4 1 1 3 1 1 2 1 4 7 1 7 10 1 6 8 1 3 6 1 7 7 1 2 3 1 6 6 1 8 10 1 4 6 1 9 11 1 2 3 1 10 14 1 6 7 1 11 11 1 19 20 1 1 5 1 8 8 1 6 9 1 2 3 1 16 19 1 18 20 1 23 27 1 6 9 1 6 10 1 30 32 1 19 23 1 17 21 1 7 9 1 15 19 1 3 5 1 1 2 1 37 38 1 14 16 1 14 16 1 26 28 1 5 9 1 34 38 1 26 2...
output:
31676 227442792
result:
ok 2 number(s): "31676 227442792"
Test #12:
score: 0
Accepted
time: 177ms
memory: 26780kb
input:
1 200000 200000 2 16 1 3 24 1 3 21 1 5 36 1 3 30 1 6 45 1 7 17 1 6 46 1 4 28 1 1 11 1 11 26 1 9 51 1 1 18 1 9 41 1 8 23 1 10 10 1 1 41 1 5 27 1 16 55 1 20 27 1 10 53 1 12 52 1 20 32 1 1 3 1 1 49 1 24 65 1 20 56 1 18 29 1 11 32 1 20 48 1 3 22 1 20 53 1 32 76 1 4 43 1 17 37 1 34 74 1 12 17 1 32 68 1 1...
output:
68340 480122735
result:
ok 2 number(s): "68340 480122735"
Test #13:
score: 0
Accepted
time: 171ms
memory: 26804kb
input:
1 200000 200000 1 105 1 3 24 1 3 742 1 3 689 1 5 445 1 5 384 1 1 796 1 3 880 1 8 984 1 4 907 1 8 79 1 12 887 1 1 731 1 8 154 1 6 745 1 6 328 1 7 487 1 7 526 1 2 819 1 6 698 1 10 464 1 13 222 1 3 885 1 10 222 1 14 627 1 20 133 1 13 600 1 22 507 1 23 342 1 14 58 1 21 546 1 27 283 1 7 720 1 22 337 1 1 ...
output:
98727 824244096
result:
ok 2 number(s): "98727 824244096"
Test #14:
score: 0
Accepted
time: 86ms
memory: 25008kb
input:
1 79364 198410 79365 79366 1 79367 79368 1 79369 79370 1 79371 79372 1 79373 79374 1 79375 79376 1 79377 79378 1 79379 79380 1 79381 79382 1 79383 79384 1 79385 79386 1 79387 79388 1 79389 79390 1 79391 79392 1 79393 79394 1 79395 79396 1 79397 79398 1 79399 79400 1 79401 79402 1 79403 79404 1 79405...
output:
39682 2
result:
ok 2 number(s): "39682 2"
Test #15:
score: 0
Accepted
time: 68ms
memory: 3700kb
input:
10000 20 20 1 20 1 1 20 1 1 17 1 1 17 1 1 18 1 2 15 1 2 18 1 3 19 1 2 20 1 1 18 1 1 20 1 2 20 1 2 16 1 4 18 1 3 20 1 1 19 1 2 20 1 1 20 1 1 19 1 1 20 1 20 20 2 16 1 6 17 1 4 19 1 4 18 1 1 19 1 1 20 1 1 18 1 2 20 1 1 14 1 1 20 1 3 18 1 1 20 1 2 20 1 1 20 1 4 15 1 2 20 1 1 20 1 3 20 1 4 20 1 1 18 1 20...
output:
20 1 20 1 20 1 20 1 20 1 19 1 19 1 19 1 18 2 18 1 20 1 20 1 20 1 20 1 20 1 20 1 18 1 18 1 17 2 17 1 20 1 20 1 20 1 19 2 20 1 20 1 19 1 18 3 16 4 16 2 20 1 20 1 20 1 20 1 20 1 20 1 20 1 17 3 19 1 18 1 20 1 20 1 20 1 20 1 20 1 18 2 20 1 16 1 16 3 18 1 20 1 20 1 20 1 20 1 18 2 20 1 20 1 19 1 18 2 19 2 ...
result:
ok 20000 numbers
Test #16:
score: 0
Accepted
time: 102ms
memory: 3660kb
input:
1000 200 200 1 199 1 1 200 1 1 194 1 48 158 1 88 118 1 6 199 1 2 196 1 58 141 1 34 190 1 94 123 1 1 200 1 85 113 1 74 120 1 56 140 1 98 115 1 68 133 1 95 112 1 6 199 1 24 187 1 93 113 1 5 200 1 4 194 1 52 138 1 85 126 1 30 171 1 74 151 1 46 164 1 3 197 1 98 103 1 86 116 1 86 112 1 9 190 1 97 98 1 10...
output:
197 1 194 1 195 2 195 2 195 1 192 3 194 4 195 2 192 2 187 1 198 2 194 2 198 1 196 1 192 8 196 2 195 1 190 1 190 1 186 6 197 1 197 2 195 2 190 4 190 2 195 1 194 2 192 1 192 6 188 3 196 2 192 1 192 4 195 4 189 4 193 5 195 2 195 4 191 2 190 11 195 1 196 3 188 3 192 1 191 2 192 3 196 2 199 1 189 6 188 6...
result:
ok 2000 numbers
Test #17:
score: 0
Accepted
time: 229ms
memory: 16512kb
input:
1 200000 70000 27719 42274 1 6647 63356 1 5652 64350 1 22872 47119 1 3679 66321 1 11511 58495 1 23308 46704 1 24449 45557 1 33000 36998 1 5669 64344 1 2638 67371 1 17273 52732 1 26524 43487 1 6542 63460 1 23855 46144 1 3415 66589 1 8348 61652 1 10806 59196 1 14117 55892 1 2754 67250 1 10393 59604 1 ...
output:
199993 1
result:
ok 2 number(s): "199993 1"
Test #18:
score: 0
Accepted
time: 231ms
memory: 26720kb
input:
1 200000 200000 13120 186896 1 57545 142432 1 91680 108341 1 46072 153888 1 4082 195951 1 59587 140389 1 22601 177420 1 95670 104331 1 56267 143757 1 86957 113079 1 25102 174930 1 4532 195474 1 21523 178514 1 83244 116749 1 42887 157135 1 40685 159320 1 96933 103074 1 21007 179004 1 79655 120339 1 5...
output:
199986 8
result:
ok 2 number(s): "199986 8"
Test #19:
score: 0
Accepted
time: 197ms
memory: 26776kb
input:
1 200000 200000 2 199999 1 1 200000 1 1 200000 1 5 200000 1 4 199997 1 3 199996 1 7 200000 1 7 199992 1 8 199995 1 10 199997 1 8 199995 1 13 199989 1 11 199992 1 7 199989 1 8 200000 1 8 199997 1 12 199988 1 3 199983 1 10 199985 1 10 199982 1 13 199990 1 1 199985 1 19 199992 1 10 199995 1 8 199975 1 ...
output:
199985 1
result:
ok 2 number(s): "199985 1"
Test #20:
score: 0
Accepted
time: 145ms
memory: 4512kb
input:
300 1497 2969 558 2856 1 1484 1893 1 438 2226 1 1292 2738 1 397 903 1 1181 1723 1 2692 2880 1 885 2721 1 951 1346 1 937 2486 1 409 929 1 311 1817 1 458 1530 1 1058 1216 1 1056 1104 1 2484 2706 1 766 1796 1 754 1413 1 1684 2509 1 173 1090 1 580 1121 1 2047 2086 1 1586 1841 1 428 1819 1 1599 2696 1 73...
output:
816 280 1349 16248 249 2 92 600 348 48 23 1 38 2 297 40 196 16 1346 288 54 4 188 72 396 24 109 50 224 30 63 8 118 2 74 12 193 336 306 80 522 64 379 120 1672 1 515 8 256 56 565 45 64 2 73 2 616 128 178 8 4 2 64 2 732 6 21 9 120 8 334 128 15 7 170 320 31 1 302 72 464 4 50 13 717 1104 405 8 71 4 483 12...
result:
ok 600 numbers
Test #21:
score: 0
Accepted
time: 292ms
memory: 26776kb
input:
1 200000 200000 53839 55210 1 103761 171904 1 51490 64117 1 52415 59053 1 28403 81648 1 36025 96539 1 34877 167586 1 37797 192220 1 103331 198197 1 104826 194492 1 70132 87411 1 60069 142685 1 124807 162475 1 56049 120528 1 109669 121796 1 36092 179102 1 156082 170394 1 117350 157532 1 39585 145600 ...
output:
100201 402633336
result:
ok 2 number(s): "100201 402633336"
Test #22:
score: 0
Accepted
time: 77ms
memory: 24924kb
input:
1 79364 198410 158727 198410 1 158725 198410 1 158723 198410 1 158721 198410 1 158719 198410 1 158717 198410 1 158715 198410 1 158713 198410 1 158711 198410 1 158709 198410 1 158707 198410 1 158705 198410 1 158703 198410 1 158701 198410 1 158699 198410 1 158697 198410 1 158695 198410 1 158693 198410...
output:
39682 2
result:
ok 2 number(s): "39682 2"
Test #23:
score: 0
Accepted
time: 57ms
memory: 24636kb
input:
1 66666 199998 133331 199998 1 133329 199998 1 133327 199998 1 133325 199998 1 133323 199998 1 133321 199998 1 133319 199998 1 133317 199998 1 133315 199998 1 133313 199998 1 133311 199998 1 133309 199998 1 133307 199998 1 133305 199998 1 133303 199998 1 133301 199998 1 133299 199998 1 133297 199998...
output:
66666 1
result:
ok 2 number(s): "66666 1"
Test #24:
score: 0
Accepted
time: 70ms
memory: 3660kb
input:
10000 20 20 2 20 5 1 20 5 2 20 2 1 20 6 3 17 3 1 20 4 2 20 7 5 20 1 1 18 5 2 18 7 2 18 2 2 18 1 1 19 6 1 20 3 1 20 7 1 16 1 2 18 10 9 15 8 1 19 6 5 20 4 20 20 2 15 3 2 19 7 1 20 2 1 18 6 3 20 5 1 20 9 1 20 10 1 19 1 1 19 3 3 16 7 2 19 4 3 17 3 1 20 10 3 16 4 2 18 4 2 15 6 2 20 2 2 20 9 3 20 5 2 13 5...
output:
93 1 105 1 128 1 117 1 114 1 124 1 98 1 101 1 127 1 117 1 112 1 108 1 111 1 99 1 97 1 105 1 106 1 116 1 97 1 107 1 113 1 115 1 86 1 137 1 99 1 108 2 114 1 94 1 96 1 83 1 113 1 104 1 99 1 82 1 117 1 91 1 103 1 107 1 100 1 86 1 123 1 111 1 119 1 112 1 78 1 128 1 122 1 117 1 91 1 108 1 118 1 99 1 99 1 ...
result:
ok 20000 numbers
Test #25:
score: 0
Accepted
time: 101ms
memory: 3700kb
input:
1000 200 200 62 139 8 89 110 10 40 183 5 59 156 10 3 189 4 75 128 4 78 125 1 5 192 9 8 195 3 32 151 3 92 99 9 65 139 1 74 119 2 12 185 6 70 143 2 3 194 5 24 174 5 80 142 6 63 144 3 71 134 10 1 200 5 85 123 1 95 126 8 112 121 8 94 111 10 92 113 1 1 199 5 57 144 9 81 122 4 52 160 5 2 200 9 60 139 10 5...
output:
1077 1 1073 1 1028 1 1048 1 1088 2 1075 1 1021 1 1008 2 1093 2 1127 1 1083 1 1104 1 1102 1 1146 1 994 1 1047 1 970 1 1089 1 1052 1 998 1 996 1 1135 1 1155 1 1158 1 1046 1 1129 1 1012 1 1080 2 990 1 1002 1 1077 1 1098 1 1089 1 995 1 1109 1 1133 1 1037 1 1108 1 1053 2 1088 1 1043 1 1153 1 1053 1 1051 ...
result:
ok 2000 numbers
Test #26:
score: 0
Accepted
time: 225ms
memory: 16576kb
input:
1 200000 70000 13421 56568 1 4349 65667 2 15557 54445 2 25559 44450 1 23675 46328 1 13772 56231 1 23551 46447 3 23209 46801 2 6747 63266 1 8699 61307 1 24946 45064 3 18881 51117 3 25923 44084 3 31091 38916 1 31929 38072 2 16293 53701 2 16194 53809 2 10662 59337 3 6960 63032 3 25829 44157 2 34484 355...
output:
400757 1
result:
ok 2 number(s): "400757 1"
Test #27:
score: 0
Accepted
time: 240ms
memory: 26700kb
input:
1 200000 200000 14346 185691 9 15513 184451 4 95019 104950 3 5289 194720 4 78689 121304 1 54194 145818 4 17594 182430 10 45423 154549 7 32203 167784 6 80570 119468 6 57035 142929 3 50995 149009 8 56869 143107 9 68883 131145 3 49209 150773 8 8768 191241 3 18033 181985 2 19511 180501 10 83354 116645 2...
output:
1101347 2
result:
ok 2 number(s): "1101347 2"
Test #28:
score: 0
Accepted
time: 257ms
memory: 26772kb
input:
1 200000 200000 1835 1860 3 72172 72215 7 80101 80110 6 19476 19513 9 93148 93242 8 46447 46522 9 35057 35071 6 66552 66630 8 83931 83967 4 8564 8567 10 20863 20946 1 39346 39441 6 25535 25599 8 12284 12309 3 9979 9999 6 99467 99549 9 22984 23004 10 1635 1665 4 72541 72615 3 99278 99346 2 50884 5091...
output:
6621 113246208
result:
ok 2 number(s): "6621 113246208"
Test #29:
score: 0
Accepted
time: 162ms
memory: 26724kb
input:
1 200000 200000 2 5 7 1 88 5 2 93 9 3 29 1 1 29 3 4 93 5 7 27 4 9 32 6 8 29 9 8 103 9 10 76 4 3 89 6 4 23 6 8 64 4 3 43 8 15 77 3 13 51 6 19 26 6 4 40 7 5 95 9 21 60 5 18 58 6 3 73 10 19 79 1 15 49 7 12 105 3 26 88 8 1 55 8 21 65 8 30 60 9 31 89 1 33 116 6 31 112 2 11 82 10 34 75 7 22 24 5 27 69 1 1...
output:
462635 711287574
result:
ok 2 number(s): "462635 711287574"
Test #30:
score: 0
Accepted
time: 134ms
memory: 4408kb
input:
300 55 318 69 305 4029 182 308 4191 40 306 2136 6 262 1542 105 128 4386 75 192 2596 131 288 3792 112 118 632 34 187 785 104 119 3567 231 253 3264 164 215 2600 82 107 4796 115 168 1140 39 165 1064 95 291 2364 184 232 49 22 264 972 4 190 4675 10 245 3304 67 183 3844 171 175 400 88 140 3296 85 130 2544...
output:
93668 1 1475675 1 1861822 1 1729524 1 1017322 1 906885 1 259697 1 585460 1 1139624 1 63824 1 1015898 1 683051 1 780407 1 555390 1 68540 1 1196528 1 1398141 1 94744 1 548364 1 667084 1 371386 2 161105 1 1292366 1 393038 1 635798 1 799982 1 113188 1 204880 1 22995 1 79812 1 223924 1 777346 1 119204 1 ...
result:
ok 600 numbers
Test #31:
score: 0
Accepted
time: 268ms
memory: 26784kb
input:
1 200000 200000 54789 89627 8054928 128204 171619 8705846 111831 185204 287046 35223 98646 1902720 37958 87251 9760212 74544 85603 1537270 70376 131929 4873392 44922 170533 2705892 166191 168630 9013379 27266 128950 7524690 93950 112980 5561322 63354 106040 4891284 42904 153325 9266452 11155 35900 2...
output:
494907106860 1
result:
ok 2 number(s): "494907106860 1"
Test #32:
score: 0
Accepted
time: 45ms
memory: 24576kb
input:
1 59524 198410 158727 198410 1 158725 198410 1 158723 198410 1 158721 198410 1 158719 198410 1 158717 198410 1 158715 198410 1 158713 198410 1 158711 198410 1 158709 198410 1 158707 198410 1 158705 198410 1 158703 198410 1 158701 198410 1 158699 198410 1 158697 198410 1 158695 198410 1 158693 198410...
output:
1000019841 1
result:
ok 2 number(s): "1000019841 1"
Test #33:
score: 0
Accepted
time: 49ms
memory: 24728kb
input:
1 59524 198410 79365 79366 1 79367 79368 1 79369 79370 1 79371 79372 1 79373 79374 1 79375 79376 1 79377 79378 1 79379 79380 1 79381 79382 1 79383 79384 1 79385 79386 1 79387 79388 1 79389 79390 1 79391 79392 1 79393 79394 1 79395 79396 1 79397 79398 1 79399 79400 1 79401 79402 1 79403 79404 1 79405...
output:
1000019841 1
result:
ok 2 number(s): "1000019841 1"
Test #34:
score: 0
Accepted
time: 70ms
memory: 24956kb
input:
1 79364 198410 158727 198410 1 158725 198410 1 158723 198410 1 158721 198410 1 158719 198410 1 158717 198410 1 158715 198410 1 158713 198410 1 158711 198410 1 158709 198410 1 158707 198410 1 158705 198410 1 158703 198410 1 158701 198410 1 158699 198410 1 158697 198410 1 158695 198410 1 158693 198410...
output:
29762000000000 1
result:
ok 2 number(s): "29762000000000 1"
Test #35:
score: 0
Accepted
time: 78ms
memory: 24948kb
input:
1 79364 198410 79365 79366 1 79367 79368 1 79369 79370 1 79371 79372 1 79373 79374 1 79375 79376 1 79377 79378 1 79379 79380 1 79381 79382 1 79383 79384 1 79385 79386 1 79387 79388 1 79389 79390 1 79391 79392 1 79393 79394 1 79395 79396 1 79397 79398 1 79399 79400 1 79401 79402 1 79403 79404 1 79405...
output:
29762000000000 1
result:
ok 2 number(s): "29762000000000 1"