QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#408535 | #2618. Casual Dancers | iee | AC ✓ | 1890ms | 31680kb | C++17 | 18.0kb | 2024-05-10 17:00:28 | 2024-05-10 17:00:29 |
Judging History
answer
#include <bits/stdc++.h>
using i64 = long long;
template<class T>
constexpr T power(T a, i64 b) {
T res{1};
for (; b; b /= 2, a *= a) {
if (b % 2) {
res *= a;
}
}
return res;
}
constexpr i64 mul(i64 a, i64 b, i64 p) {
i64 res = a * b - i64(1.L * a * b / p) * p;
res %= p;
if (res < 0) {
res += p;
}
return res;
}
template<i64 P>
struct MLong {
i64 x;
constexpr MLong() : x{} {}
constexpr MLong(i64 x) : x{norm(x % getMod())} {}
static i64 Mod;
constexpr static i64 getMod() {
if (P > 0) {
return P;
} else {
return Mod;
}
}
constexpr static void setMod(i64 Mod_) {
Mod = Mod_;
}
constexpr i64 norm(i64 x) const {
if (x < 0) {
x += getMod();
}
if (x >= getMod()) {
x -= getMod();
}
return x;
}
constexpr i64 val() const {
return x;
}
explicit constexpr operator i64() const {
return x;
}
constexpr MLong operator-() const {
MLong res;
res.x = norm(getMod() - x);
return res;
}
constexpr MLong inv() const {
assert(x != 0);
return power(*this, getMod() - 2);
}
constexpr MLong &operator*=(MLong rhs) & {
x = mul(x, rhs.x, getMod());
return *this;
}
constexpr MLong &operator+=(MLong rhs) & {
x = norm(x + rhs.x);
return *this;
}
constexpr MLong &operator-=(MLong rhs) & {
x = norm(x - rhs.x);
return *this;
}
constexpr MLong &operator/=(MLong rhs) & {
return *this *= rhs.inv();
}
friend constexpr MLong operator*(MLong lhs, MLong rhs) {
MLong res = lhs;
res *= rhs;
return res;
}
friend constexpr MLong operator+(MLong lhs, MLong rhs) {
MLong res = lhs;
res += rhs;
return res;
}
friend constexpr MLong operator-(MLong lhs, MLong rhs) {
MLong res = lhs;
res -= rhs;
return res;
}
friend constexpr MLong operator/(MLong lhs, MLong rhs) {
MLong res = lhs;
res /= rhs;
return res;
}
friend constexpr std::istream &operator>>(std::istream &is, MLong &a) {
i64 v;
is >> v;
a = MLong(v);
return is;
}
friend constexpr std::ostream &operator<<(std::ostream &os, const MLong &a) {
return os << a.val();
}
friend constexpr bool operator==(MLong lhs, MLong rhs) {
return lhs.val() == rhs.val();
}
friend constexpr bool operator!=(MLong lhs, MLong rhs) {
return lhs.val() != rhs.val();
}
};
template<>
i64 MLong<0LL>::Mod = i64(1E18) + 9;
template<int P>
struct MInt {
int x;
constexpr MInt() : x{} {}
constexpr MInt(i64 x) : x{norm(x % getMod())} {}
static int Mod;
constexpr static int getMod() {
if (P > 0) {
return P;
} else {
return Mod;
}
}
constexpr static void setMod(int Mod_) {
Mod = Mod_;
}
constexpr int norm(int x) const {
if (x < 0) {
x += getMod();
}
if (x >= getMod()) {
x -= getMod();
}
return x;
}
constexpr int val() const {
return x;
}
explicit constexpr operator int() const {
return x;
}
constexpr MInt operator-() const {
MInt res;
res.x = norm(getMod() - x);
return res;
}
constexpr MInt inv() const {
assert(x != 0);
return power(*this, getMod() - 2);
}
constexpr MInt &operator*=(MInt rhs) & {
x = 1LL * x * rhs.x % getMod();
return *this;
}
constexpr MInt &operator+=(MInt rhs) & {
x = norm(x + rhs.x);
return *this;
}
constexpr MInt &operator-=(MInt rhs) & {
x = norm(x - rhs.x);
return *this;
}
constexpr MInt &operator/=(MInt rhs) & {
return *this *= rhs.inv();
}
friend constexpr MInt operator*(MInt lhs, MInt rhs) {
MInt res = lhs;
res *= rhs;
return res;
}
friend constexpr MInt operator+(MInt lhs, MInt rhs) {
MInt res = lhs;
res += rhs;
return res;
}
friend constexpr MInt operator-(MInt lhs, MInt rhs) {
MInt res = lhs;
res -= rhs;
return res;
}
friend constexpr MInt operator/(MInt lhs, MInt rhs) {
MInt res = lhs;
res /= rhs;
return res;
}
friend constexpr std::istream &operator>>(std::istream &is, MInt &a) {
i64 v;
is >> v;
a = MInt(v);
return is;
}
friend constexpr std::ostream &operator<<(std::ostream &os, const MInt &a) {
return os << a.val();
}
friend constexpr bool operator==(MInt lhs, MInt rhs) {
return lhs.val() == rhs.val();
}
friend constexpr bool operator!=(MInt lhs, MInt rhs) {
return lhs.val() != rhs.val();
}
};
template<>
int MInt<0>::Mod = 998244353;
template<int V, int P>
constexpr MInt<P> CInv = MInt<P>(V).inv();
constexpr int P = 998244353;
using Z = MInt<P>;
std::vector<int> rev;
template<int P>
std::vector<MInt<P>> roots{0, 1};
template<int P>
constexpr MInt<P> findPrimitiveRoot() {
MInt<P> i = 2;
int k = __builtin_ctz(P - 1);
while (true) {
if (power(i, (P - 1) / 2) != 1) {
break;
}
i += 1;
}
return power(i, (P - 1) >> k);
}
template<int P>
constexpr MInt<P> primitiveRoot = findPrimitiveRoot<P>();
template<>
constexpr MInt<998244353> primitiveRoot<998244353> {31};
template<int P>
constexpr void dft(std::vector<MInt<P>> &a) {
int n = a.size();
if (int(rev.size()) != n) {
int k = __builtin_ctz(n) - 1;
rev.resize(n);
for (int i = 0; i < n; i++) {
rev[i] = rev[i >> 1] >> 1 | (i & 1) << k;
}
}
for (int i = 0; i < n; i++) {
if (rev[i] < i) {
std::swap(a[i], a[rev[i]]);
}
}
if (roots<P>.size() < n) {
int k = __builtin_ctz(roots<P>.size());
roots<P>.resize(n);
while ((1 << k) < n) {
auto e = power(primitiveRoot<P>, 1 << (__builtin_ctz(P - 1) - k - 1));
for (int i = 1 << (k - 1); i < (1 << k); i++) {
roots<P>[2 * i] = roots<P>[i];
roots<P>[2 * i + 1] = roots<P>[i] * e;
}
k++;
}
}
for (int k = 1; k < n; k *= 2) {
for (int i = 0; i < n; i += 2 * k) {
for (int j = 0; j < k; j++) {
MInt<P> u = a[i + j];
MInt<P> v = a[i + j + k] * roots<P>[k + j];
a[i + j] = u + v;
a[i + j + k] = u - v;
}
}
}
}
template<int P>
constexpr void idft(std::vector<MInt<P>> &a) {
int n = a.size();
std::reverse(a.begin() + 1, a.end());
dft(a);
MInt<P> inv = (1 - P) / n;
for (int i = 0; i < n; i++) {
a[i] *= inv;
}
}
template<int P = 998244353>
struct Poly : public std::vector<MInt<P>> {
using Value = MInt<P>;
Poly() : std::vector<Value>() {}
explicit constexpr Poly(int n) : std::vector<Value>(n) {}
explicit constexpr Poly(const std::vector<Value> &a) : std::vector<Value>(a) {}
constexpr Poly(const std::initializer_list<Value> &a) : std::vector<Value>(a) {}
template<class InputIt, class = std::_RequireInputIter<InputIt>>
explicit constexpr Poly(InputIt first, InputIt last) : std::vector<Value>(first, last) {}
template<class F>
explicit constexpr Poly(int n, F f) : std::vector<Value>(n) {
for (int i = 0; i < n; i++) {
(*this)[i] = f(i);
}
}
constexpr Poly shift(int k) const {
if (k >= 0) {
auto b = *this;
b.insert(b.begin(), k, 0);
return b;
} else if (this->size() <= -k) {
return Poly();
} else {
return Poly(this->begin() + (-k), this->end());
}
}
constexpr Poly trunc(int k) const {
Poly f = *this;
f.resize(k);
return f;
}
constexpr friend Poly operator+(const Poly &a, const Poly &b) {
Poly res(std::max(a.size(), b.size()));
for (int i = 0; i < a.size(); i++) {
res[i] += a[i];
}
for (int i = 0; i < b.size(); i++) {
res[i] += b[i];
}
return res;
}
constexpr friend Poly operator-(const Poly &a, const Poly &b) {
Poly res(std::max(a.size(), b.size()));
for (int i = 0; i < a.size(); i++) {
res[i] += a[i];
}
for (int i = 0; i < b.size(); i++) {
res[i] -= b[i];
}
return res;
}
constexpr friend Poly operator-(const Poly &a) {
std::vector<Value> res(a.size());
for (int i = 0; i < int(res.size()); i++) {
res[i] = -a[i];
}
return Poly(res);
}
constexpr friend Poly operator*(Poly a, Poly b) {
if (a.size() == 0 || b.size() == 0) {
return Poly();
}
if (a.size() < b.size()) {
std::swap(a, b);
}
int n = 1, tot = a.size() + b.size() - 1;
while (n < tot) {
n *= 2;
}
if (((P - 1) & (n - 1)) != 0 || b.size() < 128) {
Poly c(a.size() + b.size() - 1);
for (int i = 0; i < a.size(); i++) {
for (int j = 0; j < b.size(); j++) {
c[i + j] += a[i] * b[j];
}
}
return c;
}
a.resize(n);
b.resize(n);
dft(a);
dft(b);
for (int i = 0; i < n; ++i) {
a[i] *= b[i];
}
idft(a);
a.resize(tot);
return a;
}
constexpr friend Poly operator*(Value a, Poly b) {
for (int i = 0; i < int(b.size()); i++) {
b[i] *= a;
}
return b;
}
constexpr friend Poly operator*(Poly a, Value b) {
for (int i = 0; i < int(a.size()); i++) {
a[i] *= b;
}
return a;
}
constexpr friend Poly operator/(Poly a, Value b) {
for (int i = 0; i < int(a.size()); i++) {
a[i] /= b;
}
return a;
}
constexpr Poly &operator+=(Poly b) {
return (*this) = (*this) + b;
}
constexpr Poly &operator-=(Poly b) {
return (*this) = (*this) - b;
}
constexpr Poly &operator*=(Poly b) {
return (*this) = (*this) * b;
}
constexpr Poly &operator*=(Value b) {
return (*this) = (*this) * b;
}
constexpr Poly &operator/=(Value b) {
return (*this) = (*this) / b;
}
constexpr Poly deriv() const {
if (this->empty()) {
return Poly();
}
Poly res(this->size() - 1);
for (int i = 0; i < this->size() - 1; ++i) {
res[i] = (i + 1) * (*this)[i + 1];
}
return res;
}
constexpr Poly integr() const {
Poly res(this->size() + 1);
for (int i = 0; i < this->size(); ++i) {
res[i + 1] = (*this)[i] / (i + 1);
}
return res;
}
constexpr Poly inv(int m) const {
Poly x{(*this)[0].inv()};
int k = 1;
while (k < m) {
k *= 2;
x = (x * (Poly{2} - trunc(k) * x)).trunc(k);
}
return x.trunc(m);
}
constexpr Poly log(int m) const {
return (deriv() * inv(m)).integr().trunc(m);
}
constexpr Poly exp(int m) const {
Poly x{1};
int k = 1;
while (k < m) {
k *= 2;
x = (x * (Poly{1} - x.log(k) + trunc(k))).trunc(k);
}
return x.trunc(m);
}
constexpr Poly pow(int k, int m) const {
int i = 0;
while (i < this->size() && (*this)[i] == 0) {
i++;
}
if (i == this->size() || 1LL * i * k >= m) {
return Poly(m);
}
Value v = (*this)[i];
auto f = shift(-i) * v.inv();
return (f.log(m - i * k) * k).exp(m - i * k).shift(i * k) * power(v, k);
}
constexpr Poly sqrt(int m) const {
Poly x{1};
int k = 1;
while (k < m) {
k *= 2;
x = (x + (trunc(k) * x.inv(k)).trunc(k)) * CInv<2, P>;
}
return x.trunc(m);
}
constexpr Poly mulT(Poly b) const {
if (b.size() == 0) {
return Poly();
}
int n = b.size();
std::reverse(b.begin(), b.end());
return ((*this) * b).shift(-(n - 1));
}
constexpr std::vector<Value> eval(std::vector<Value> x) const {
if (this->size() == 0) {
return std::vector<Value>(x.size(), 0);
}
const int n = std::max(x.size(), this->size());
std::vector<Poly> q(4 * n);
std::vector<Value> ans(x.size());
x.resize(n);
std::function<void(int, int, int)> build = [&](int p, int l, int r) {
if (r - l == 1) {
q[p] = Poly{1, -x[l]};
} else {
int m = (l + r) / 2;
build(2 * p, l, m);
build(2 * p + 1, m, r);
q[p] = q[2 * p] * q[2 * p + 1];
}
};
build(1, 0, n);
std::function<void(int, int, int, const Poly &)> work = [&](int p, int l, int r, const Poly &num) {
if (r - l == 1) {
if (l < int(ans.size())) {
ans[l] = num[0];
}
} else {
int m = (l + r) / 2;
work(2 * p, l, m, num.mulT(q[2 * p + 1]).resize(m - l));
work(2 * p + 1, m, r, num.mulT(q[2 * p]).resize(r - m));
}
};
work(1, 0, n, mulT(q[1].inv(n)));
return ans;
}
};
template<int P = 998244353>
Poly<P> berlekampMassey(const Poly<P> &s) {
Poly<P> c;
Poly<P> oldC;
int f = -1;
for (int i = 0; i < s.size(); i++) {
auto delta = s[i];
for (int j = 1; j <= c.size(); j++) {
delta -= c[j - 1] * s[i - j];
}
if (delta == 0) {
continue;
}
if (f == -1) {
c.resize(i + 1);
f = i;
} else {
auto d = oldC;
d *= -1;
d.insert(d.begin(), 1);
MInt<P> df1 = 0;
for (int j = 1; j <= d.size(); j++) {
df1 += d[j - 1] * s[f + 1 - j];
}
assert(df1 != 0);
auto coef = delta / df1;
d *= coef;
Poly<P> zeros(i - f - 1);
zeros.insert(zeros.end(), d.begin(), d.end());
d = zeros;
auto temp = c;
c += d;
if (i - temp.size() > f - oldC.size()) {
oldC = temp;
f = i;
}
}
}
c *= -1;
c.insert(c.begin(), 1);
return c;
}
template<int P = 998244353>
MInt<P> linearRecurrence(Poly<P> p, Poly<P> q, i64 n) {
int m = q.size() - 1;
while (n > 0) {
auto newq = q;
for (int i = 1; i <= m; i += 2) {
newq[i] *= -1;
}
auto newp = p * newq;
newq = q * newq;
for (int i = 0; i < m; i++) {
p[i] = newp[i * 2 + n % 2];
}
for (int i = 0; i <= m; i++) {
q[i] = newq[i * 2];
}
n /= 2;
}
return p[0] / q[0];
}
struct Comb {
int n;
std::vector<Z> _fac;
std::vector<Z> _invfac;
std::vector<Z> _inv;
Comb() : n{0}, _fac{1}, _invfac{1}, _inv{0} {}
Comb(int n) : Comb() {
init(n);
}
void init(int m) {
m = std::min(m, Z::getMod() - 1);
if (m <= n) return;
_fac.resize(m + 1);
_invfac.resize(m + 1);
_inv.resize(m + 1);
for (int i = n + 1; i <= m; i++) {
_fac[i] = _fac[i - 1] * i;
}
_invfac[m] = _fac[m].inv();
for (int i = m; i > n; i--) {
_invfac[i - 1] = _invfac[i] * i;
_inv[i] = _invfac[i] * _fac[i - 1];
}
n = m;
}
Z fac(int m) {
if (m > n) init(2 * m);
return _fac[m];
}
Z invfac(int m) {
if (m > n) init(2 * m);
return _invfac[m];
}
Z inv(int m) {
if (m > n) init(2 * m);
return _inv[m];
}
Z binom(int n, int m) {
if (n < m || m < 0) return 0;
return fac(n) * invfac(m) * invfac(n - m);
}
} comb;
Poly<P> get(int n, int m) {
if (m == 0) {
return Poly(n + 1);
}
if (m % 2 == 1) {
auto f = get(n, m - 1);
Z p = 1;
for (int i = 0; i <= n; i++) {
f[n - i] += comb.binom(n, i) * p;
p *= m;
}
return f;
}
auto f = get(n, m / 2);
auto fm = f;
for (int i = 0; i <= n; i++) {
fm[i] *= comb.fac(i);
}
Poly pw(n + 1);
pw[0] = 1;
for (int i = 1; i <= n; i++) {
pw[i] = pw[i - 1] * (m / 2);
}
for (int i = 0; i <= n; i++) {
pw[i] *= comb.invfac(i);
}
fm = fm.mulT(pw);
for (int i = 0; i <= n; i++) {
fm[i] *= comb.invfac(i);
}
return f + fm;
}
using namespace std;
using poly = Poly<P>;
const Z inv3 = Z(1) / 3;
Z solve(int d, int k) {
poly res = power(poly{inv3, inv3, inv3}, k);
Z sum = 0;
for (int i = 0; i < res.size(); i++) {
sum += res[i] * abs(i - k - d);
}
return sum;
}
int main() {
int x, y, z;
cin >> x >> y >> z;
int k;
cin >> k;
cout << ((solve(abs(x - y), k) + solve(abs(y - z), k) + solve(abs(z - x), k)) / 2).val() << "\n";
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3564kb
input:
0 0 0 1 58
output:
1
result:
ok 1 number(s): "1"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3508kb
input:
1 2 2 1 100
output:
332748119
result:
ok 1 number(s): "332748119"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3752kb
input:
5 2 3 4 50
output:
160212060
result:
ok 1 number(s): "160212060"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3752kb
input:
-2 -1 1 2 71
output:
443664160
result:
ok 1 number(s): "443664160"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3676kb
input:
-1 0 -1 4 8
output:
751764268
result:
ok 1 number(s): "751764268"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3588kb
input:
-2 -2 2 5 54
output:
801060288
result:
ok 1 number(s): "801060288"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3676kb
input:
-2 2 4 8 36
output:
353135983
result:
ok 1 number(s): "353135983"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
8 -7 1 7 28
output:
15
result:
ok 1 number(s): "15"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3576kb
input:
-7 -8 0 16 54
output:
159363041
result:
ok 1 number(s): "159363041"
Test #10:
score: 0
Accepted
time: 0ms
memory: 3520kb
input:
5 11 -11 9 32
output:
717226646
result:
ok 1 number(s): "717226646"
Test #11:
score: 0
Accepted
time: 0ms
memory: 3520kb
input:
-16 1 -9 32 8
output:
855967855
result:
ok 1 number(s): "855967855"
Test #12:
score: 0
Accepted
time: 0ms
memory: 3480kb
input:
-13 28 28 37 80
output:
116405794
result:
ok 1 number(s): "116405794"
Test #13:
score: 0
Accepted
time: 1ms
memory: 3688kb
input:
6 26 -25 64 21
output:
91053409
result:
ok 1 number(s): "91053409"
Test #14:
score: 0
Accepted
time: 0ms
memory: 3500kb
input:
-39 23 1 31 64
output:
742331784
result:
ok 1 number(s): "742331784"
Test #15:
score: 0
Accepted
time: 1ms
memory: 3596kb
input:
-32 42 43 128 87
output:
57822539
result:
ok 1 number(s): "57822539"
Test #16:
score: 0
Accepted
time: 1ms
memory: 3580kb
input:
-80 55 -106 142 29
output:
435655440
result:
ok 1 number(s): "435655440"
Test #17:
score: 0
Accepted
time: 2ms
memory: 3632kb
input:
0 -83 -106 256 55
output:
120508896
result:
ok 1 number(s): "120508896"
Test #18:
score: 0
Accepted
time: 1ms
memory: 3684kb
input:
-100 -123 -167 91 74
output:
285780715
result:
ok 1 number(s): "285780715"
Test #19:
score: 0
Accepted
time: 3ms
memory: 3612kb
input:
252 -176 -239 512 49
output:
835642397
result:
ok 1 number(s): "835642397"
Test #20:
score: 0
Accepted
time: 4ms
memory: 3688kb
input:
-37 -124 151 867 76
output:
225290884
result:
ok 1 number(s): "225290884"
Test #21:
score: 0
Accepted
time: 7ms
memory: 3720kb
input:
-316 149 -149 1024 87
output:
374987754
result:
ok 1 number(s): "374987754"
Test #22:
score: 0
Accepted
time: 4ms
memory: 3700kb
input:
370 545 81 1073 69
output:
943329809
result:
ok 1 number(s): "943329809"
Test #23:
score: 0
Accepted
time: 14ms
memory: 3656kb
input:
-81 182 532 2048 87
output:
843173062
result:
ok 1 number(s): "843173062"
Test #24:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
-1229 -1607 319 199 24
output:
1926
result:
ok 1 number(s): "1926"
Test #25:
score: 0
Accepted
time: 31ms
memory: 4184kb
input:
43 -419 -613 4096 46
output:
418220629
result:
ok 1 number(s): "418220629"
Test #26:
score: 0
Accepted
time: 18ms
memory: 3716kb
input:
3434 -3146 -1774 2601 46
output:
705802517
result:
ok 1 number(s): "705802517"
Test #27:
score: 0
Accepted
time: 67ms
memory: 4868kb
input:
2193 -2331 2901 8192 75
output:
728593792
result:
ok 1 number(s): "728593792"
Test #28:
score: 0
Accepted
time: 4ms
memory: 3656kb
input:
233 -4307 -4363 1093 81
output:
303899847
result:
ok 1 number(s): "303899847"
Test #29:
score: 0
Accepted
time: 143ms
memory: 6068kb
input:
-4522 762 8059 16384 34
output:
190696426
result:
ok 1 number(s): "190696426"
Test #30:
score: 0
Accepted
time: 187ms
memory: 6728kb
input:
-5155 -3639 15798 24822 55
output:
808461103
result:
ok 1 number(s): "808461103"
Test #31:
score: 0
Accepted
time: 304ms
memory: 9284kb
input:
15234 4368 12248 32768 19
output:
115861480
result:
ok 1 number(s): "115861480"
Test #32:
score: 0
Accepted
time: 393ms
memory: 10012kb
input:
820 30492 3951 42789 76
output:
826647308
result:
ok 1 number(s): "826647308"
Test #33:
score: 0
Accepted
time: 637ms
memory: 15392kb
input:
1372 -24835 -24597 65536 65
output:
355997764
result:
ok 1 number(s): "355997764"
Test #34:
score: 0
Accepted
time: 839ms
memory: 17096kb
input:
-59726 17559 -45875 87143 58
output:
326130350
result:
ok 1 number(s): "326130350"
Test #35:
score: 0
Accepted
time: 1353ms
memory: 27580kb
input:
-27584 51950 23030 131072 74
output:
325794325
result:
ok 1 number(s): "325794325"
Test #36:
score: 0
Accepted
time: 1749ms
memory: 30808kb
input:
61155 52006 74974 164861 5
output:
160748350
result:
ok 1 number(s): "160748350"
Test #37:
score: 0
Accepted
time: 1833ms
memory: 31576kb
input:
41344 -81596 -95774 200000 59
output:
965482998
result:
ok 1 number(s): "965482998"
Test #38:
score: 0
Accepted
time: 193ms
memory: 6648kb
input:
42056 -90767 -54649 24350 63
output:
132823
result:
ok 1 number(s): "132823"
Test #39:
score: 0
Accepted
time: 1842ms
memory: 31572kb
input:
-74335 43393 57021 199994 67
output:
310210583
result:
ok 1 number(s): "310210583"
Test #40:
score: 0
Accepted
time: 1681ms
memory: 30012kb
input:
-80838 73772 -18618 134415 57
output:
346157175
result:
ok 1 number(s): "346157175"
Test #41:
score: 0
Accepted
time: 1851ms
memory: 31528kb
input:
37457 74497 -81166 199997 59
output:
26667908
result:
ok 1 number(s): "26667908"
Test #42:
score: 0
Accepted
time: 1753ms
memory: 30920kb
input:
31109 -65140 -77085 162412 46
output:
12858959
result:
ok 1 number(s): "12858959"
Test #43:
score: 0
Accepted
time: 1850ms
memory: 31420kb
input:
-58550 -97769 66373 199995 86
output:
789346262
result:
ok 1 number(s): "789346262"
Test #44:
score: 0
Accepted
time: 933ms
memory: 17404kb
input:
7739 58831 72332 124270 16
output:
167162440
result:
ok 1 number(s): "167162440"
Test #45:
score: 0
Accepted
time: 1865ms
memory: 31520kb
input:
-97901 25173 -99145 199999 52
output:
797290311
result:
ok 1 number(s): "797290311"
Test #46:
score: 0
Accepted
time: 934ms
memory: 17548kb
input:
-87118 -60882 -86669 126103 23
output:
487838027
result:
ok 1 number(s): "487838027"
Test #47:
score: 0
Accepted
time: 1860ms
memory: 31424kb
input:
-71646 69885 70206 200000 27
output:
285981891
result:
ok 1 number(s): "285981891"
Test #48:
score: 0
Accepted
time: 908ms
memory: 17400kb
input:
14475 -77173 -5177 117777 51
output:
251933976
result:
ok 1 number(s): "251933976"
Test #49:
score: 0
Accepted
time: 1857ms
memory: 31500kb
input:
-35780 37165 54712 199996 14
output:
763964192
result:
ok 1 number(s): "763964192"
Test #50:
score: 0
Accepted
time: 881ms
memory: 17180kb
input:
15709 -72676 -22298 101968 17
output:
406652317
result:
ok 1 number(s): "406652317"
Test #51:
score: 0
Accepted
time: 1851ms
memory: 31496kb
input:
74572 -98701 -56974 199991 62
output:
55467556
result:
ok 1 number(s): "55467556"
Test #52:
score: 0
Accepted
time: 1762ms
memory: 30816kb
input:
-14644 -10031 -50353 168383 43
output:
376814948
result:
ok 1 number(s): "376814948"
Test #53:
score: 0
Accepted
time: 1890ms
memory: 31492kb
input:
22388 51898 80903 199995 89
output:
832434478
result:
ok 1 number(s): "832434478"
Test #54:
score: 0
Accepted
time: 931ms
memory: 17396kb
input:
34062 -76211 -25545 127193 91
output:
234760702
result:
ok 1 number(s): "234760702"
Test #55:
score: 0
Accepted
time: 1864ms
memory: 31680kb
input:
-19645 -45450 -16512 200000 77
output:
759439547
result:
ok 1 number(s): "759439547"
Test #56:
score: 0
Accepted
time: 180ms
memory: 6476kb
input:
98957 80512 -24606 20311 30
output:
985804570
result:
ok 1 number(s): "985804570"
Test #57:
score: 0
Accepted
time: 1853ms
memory: 31520kb
input:
-87259 -11505 14596 199994 83
output:
160520754
result:
ok 1 number(s): "160520754"
Test #58:
score: 0
Accepted
time: 1846ms
memory: 31456kb
input:
0 0 0 200000 0
output:
393458944
result:
ok 1 number(s): "393458944"
Test #59:
score: 0
Accepted
time: 1870ms
memory: 31556kb
input:
0 0 0 200000 100
output:
393458944
result:
ok 1 number(s): "393458944"
Test #60:
score: 0
Accepted
time: 1853ms
memory: 31564kb
input:
-100000 -100000 -100000 200000 75
output:
393458944
result:
ok 1 number(s): "393458944"
Test #61:
score: 0
Accepted
time: 1858ms
memory: 31540kb
input:
100000 100000 100000 200000 63
output:
393458944
result:
ok 1 number(s): "393458944"
Test #62:
score: 0
Accepted
time: 1887ms
memory: 31544kb
input:
100000 0 -100000 200000 56
output:
678255914
result:
ok 1 number(s): "678255914"
Test #63:
score: 0
Accepted
time: 1836ms
memory: 31448kb
input:
0 1 2 200000 22
output:
630634769
result:
ok 1 number(s): "630634769"
Test #64:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
100000 0 -100000 1 32
output:
200000
result:
ok 1 number(s): "200000"
Test #65:
score: 0
Accepted
time: 1ms
memory: 3752kb
input:
100000 100000 100000 1 33
output:
1
result:
ok 1 number(s): "1"
Test #66:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
-100000 -100000 -100000 1 6
output:
1
result:
ok 1 number(s): "1"
Test #67:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
100000 100000 -100000 1 7
output:
332948118
result:
ok 1 number(s): "332948118"
Test #68:
score: 0
Accepted
time: 1ms
memory: 3584kb
input:
-100000 -100000 100000 1 40
output:
332948118
result:
ok 1 number(s): "332948118"
Test #69:
score: 0
Accepted
time: 1ms
memory: 3516kb
input:
100000 -100000 -100000 100 63
output:
764105630
result:
ok 1 number(s): "764105630"
Test #70:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
-100000 100000 100000 100 13
output:
764105630
result:
ok 1 number(s): "764105630"
Test #71:
score: 0
Accepted
time: 1ms
memory: 3588kb
input:
-100000 100000 0 100 10
output:
200000
result:
ok 1 number(s): "200000"
Test #72:
score: 0
Accepted
time: 876ms
memory: 17248kb
input:
-100000 100000 0 99999 77
output:
200000
result:
ok 1 number(s): "200000"
Test #73:
score: 0
Accepted
time: 860ms
memory: 17164kb
input:
-100000 100000 0 100000 80
output:
200000
result:
ok 1 number(s): "200000"
Test #74:
score: 0
Accepted
time: 870ms
memory: 17236kb
input:
-100000 100000 0 100001 5
output:
50125708
result:
ok 1 number(s): "50125708"