Submission #891951

# Submission time Handle Problem Language Result Execution time Memory
891951 2023-12-24T13:49:08 Z josanneo22 Kangaroo (CEOI16_kangaroo) C++17
100 / 100
27 ms 16988 KB
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;

namespace fast {
#pragma GCC optimize(Ofast)
#pragma GCC optimization (unroll-loops)
#pragma GCC target(avx,avx2,fma)
#pragma GCC target(sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,tune=native)
#pragma GCC optimize(3)
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
}
using namespace fast;

inline string read_string() {
    char ch = getchar(); string st1 = "";
    while (!((ch >= 'A') && (ch <= 'Z'))) ch = getchar();
    while ((ch >= 'A') && (ch <= 'Z'))  st1 += ch, ch = getchar();
    return st1;
}
char buf[1 << 23], * p1 = buf, * p2 = buf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
template<typename T> inline void re(T& x) { x = 0; T f = 1; char ch = getchar();  while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar(); } while (isdigit(ch)) { x = x * (1 << 1) + x * (1 << 3) + (ch - 48); ch = getchar(); } x *= f; }
template<typename x, typename... y>void re(x& a, y&... b) { re(a); re(b...); }
template<typename T> inline void ps(T x) { if (x < 0) { putchar('-'); x = -x; } if (x > 9)  ps(x / 10); putchar(x % 10 + '0'); }
template<typename x, typename... y>void ps(x& a, y&... b) { ps(a); putchar(' '); ps(b...); }
#define sp putchar(' ')
#define nl putchar('\n')

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 = 1E9+7;

template<int V, int P>
constexpr MInt<P> CInv = MInt<P>(V).inv();

constexpr int P = 1E9+7;
using Z = MInt<P>;

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 C(int n, int m) {
        if (n < m || m < 0) return 0;
        return fac(n) * invfac(m) * invfac(n - m);
    }
    Z find(int n, int m, int k) {
        /*  x1+x2+x3+...+xm = k and 0<=x1,x2,x3...,xm<n
            x1+x2+x3+...=k+m and x1,x2,x3...xm>=1
            f(i) = no of cases such that >=i numbers are >n
            f(i) = m C i * (m+k-i*n-1) C (m-1)
            ans= f(i) * (-1)^i for i->[0,m] */
        Z ans = 0; int ops = 1;
        for (int i = 0; i <= m; i++) {
            Z t = C(m, i) * C(m + k - i * n - 1, m - 1);
            if (ops == -1) ans -= t;
            else ans += t;
            ops *= -1;
        }
        return ans;
    }

} comb;

//mod = 1E9+7

const int _N = 2005;
Z dp[_N][_N];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);

    int N, A, B; re(N, A, B);
    dp[1][1] = 1;
    for (int i = 2; i <= N; i++) {
        for (int j = 1; j <= N; j++) {
            if (i == A || i == B) {
                dp[i][j] += dp[i - 1][j];
                dp[i][j] += dp[i - 1][j - 1];
                continue;
            }
            int cnt = (i > A) + (i > B);
            dp[i][j] += dp[i - 1][j - 1] * (j - cnt);//不能放头,不能放尾
            dp[i][j] += dp[i - 1][j + 1] * j;
        }
    }
    i64 v = dp[N][1].val();
    ps(v);
}

Compilation message

kangaroo.cpp:7: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    7 | #pragma GCC optimization (unroll-loops)
      | 
kangaroo.cpp:6:22: warning: '#pragma GCC optimize' is not a string or number [-Wpragmas]
    6 | #pragma GCC optimize(Ofast)
      |                      ^~~~~
kangaroo.cpp:8:20: warning: '#pragma GCC option' is not a string [-Wpragmas]
    8 | #pragma GCC target(avx,avx2,fma)
      |                    ^~~
kangaroo.cpp:9:20: warning: '#pragma GCC option' is not a string [-Wpragmas]
    9 | #pragma GCC target(sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,tune=native)
      |                    ^~~
kangaroo.cpp:29:39: warning: bad option '-fwhole-program' to pragma 'optimize' [-Wpragmas]
   29 | #pragma GCC optimize("-fwhole-program")
      |                                       ^
kangaroo.cpp:36:41: warning: bad option '-fstrict-overflow' to pragma 'optimize' [-Wpragmas]
   36 | #pragma GCC optimize("-fstrict-overflow")
      |                                         ^
kangaroo.cpp:38:41: warning: bad option '-fcse-skip-blocks' to pragma 'optimize' [-Wpragmas]
   38 | #pragma GCC optimize("-fcse-skip-blocks")
      |                                         ^
kangaroo.cpp:52:51: warning: bad option '-funsafe-loop-optimizations' to pragma 'optimize' [-Wpragmas]
   52 | #pragma GCC optimize("-funsafe-loop-optimizations")
      |                                                   ^
kangaroo.cpp:58:27: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   58 | inline string read_string() {
      |                           ^
kangaroo.cpp:58:27: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:58:27: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:58:27: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:66:41: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   66 | template<typename T> inline void re(T& x) { x = 0; T f = 1; char ch = getchar();  while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar(); } while (isdigit(ch)) { x = x * (1 << 1) + x * (1 << 3) + (ch - 48); ch = getchar(); } x *= f; }
      |                                         ^
kangaroo.cpp:66:41: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:66:41: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:66:41: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:67:57: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   67 | template<typename x, typename... y>void re(x& a, y&... b) { re(a); re(b...); }
      |                                                         ^
kangaroo.cpp:67:57: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:67:57: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:67:57: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:68:40: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   68 | template<typename T> inline void ps(T x) { if (x < 0) { putchar('-'); x = -x; } if (x > 9)  ps(x / 10); putchar(x % 10 + '0'); }
      |                                        ^
kangaroo.cpp:68:40: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:68:40: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:68:40: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:69:57: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   69 | template<typename x, typename... y>void ps(x& a, y&... b) { ps(a); putchar(' '); ps(b...); }
      |                                                         ^
kangaroo.cpp:69:57: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:69:57: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:69:57: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:74:29: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   74 | constexpr T power(T a, i64 b) {
      |                             ^
kangaroo.cpp:74:29: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:74:29: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:74:29: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:84:38: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   84 | constexpr i64 mul(i64 a, i64 b, i64 p) {
      |                                      ^
kangaroo.cpp:84:38: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:84:38: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:84:38: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:95:21: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   95 |     constexpr MLong() : x{} {}
      |                     ^
kangaroo.cpp:95:21: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:95:21: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:95:21: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:96:26: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   96 |     constexpr MLong(i64 x) : x{ norm(x % getMod()) } {}
      |                          ^
kangaroo.cpp:96:26: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:96:26: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:96:26: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:99:33: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
   99 |     constexpr static i64 getMod() {
      |                                 ^
kangaroo.cpp:99:33: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:99:33: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:99:33: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:107:42: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  107 |     constexpr static void setMod(i64 Mod_) {
      |                                          ^
kangaroo.cpp:107:42: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:107:42: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:107:42: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:110:31: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  110 |     constexpr i64 norm(i64 x) const {
      |                               ^~~~~
kangaroo.cpp:110:31: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:110:31: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:110:31: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:119:25: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  119 |     constexpr i64 val() const {
      |                         ^~~~~
kangaroo.cpp:119:25: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:119:25: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:119:25: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:122:39: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  122 |     explicit constexpr operator i64() const {
      |                                       ^~~~~
kangaroo.cpp:122:39: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:122:39: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:122:39: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:125:33: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  125 |     constexpr MLong operator-() const {
      |                                 ^~~~~
kangaroo.cpp:125:33: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:125:33: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:125:33: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:130:27: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  130 |     constexpr MLong inv() const {
      |                           ^~~~~
kangaroo.cpp:130:27: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:130:27: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:130:27: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:134:43: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  134 |     constexpr MLong& operator*=(MLong rhs)& {
      |                                           ^
kangaroo.cpp:134:43: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:134:43: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:134:43: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:138:43: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  138 |     constexpr MLong& operator+=(MLong rhs)& {
      |                                           ^
kangaroo.cpp:138:43: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:138:43: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:138:43: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:142:43: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  142 |     constexpr MLong& operator-=(MLong rhs)& {
      |                                           ^
kangaroo.cpp:142:43: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:142:43: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:142:43: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:146:43: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  146 |     constexpr MLong& operator/=(MLong rhs)& {
      |                                           ^
kangaroo.cpp:146:43: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:146:43: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:146:43: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:149:58: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  149 |     friend constexpr MLong operator*(MLong lhs, MLong rhs) {
      |                                                          ^
kangaroo.cpp:149:58: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:149:58: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:149:58: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:154:58: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  154 |     friend constexpr MLong operator+(MLong lhs, MLong rhs) {
      |                                                          ^
kangaroo.cpp:154:58: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:154:58: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:154:58: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:159:58: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  159 |     friend constexpr MLong operator-(MLong lhs, MLong rhs) {
      |                                                          ^
kangaroo.cpp:159:58: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:159:58: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:159:58: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:164:58: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  164 |     friend constexpr MLong operator/(MLong lhs, MLong rhs) {
      |                                                          ^
kangaroo.cpp:164:58: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:164:58: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:164:58: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:169:73: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  169 |     friend constexpr std::istream& operator>>(std::istream& is, MLong& a) {
      |                                                                         ^
kangaroo.cpp:169:73: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:169:73: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:169:73: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:175:79: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  175 |     friend constexpr std::ostream& operator<<(std::ostream& os, const MLong& a) {
      |                                                                               ^
kangaroo.cpp:175:79: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:175:79: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:175:79: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:178:58: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  178 |     friend constexpr bool operator==(MLong lhs, MLong rhs) {
      |                                                          ^
kangaroo.cpp:178:58: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:178:58: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:178:58: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:181:58: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  181 |     friend constexpr bool operator!=(MLong lhs, MLong rhs) {
      |                                                          ^
kangaroo.cpp:181:58: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:181:58: warning: bad option '-fcse-skip-blocks' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:181:58: warning: bad option '-funsafe-loop-optimizations' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:192:20: warning: bad option '-fwhole-program' to attribute 'optimize' [-Wattributes]
  192 |     constexpr MInt() : x{} {}
      |                    ^
kangaroo.cpp:192:20: warning: bad option '-fstrict-overflow' to attribute 'optimize' [-Wattributes]
kangaroo.cpp:192:20: warning: b
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2904 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 1 ms 2684 KB Output is correct
7 Correct 1 ms 2648 KB Output is correct
8 Correct 1 ms 2652 KB Output is correct
9 Correct 1 ms 2652 KB Output is correct
10 Correct 1 ms 2652 KB Output is correct
11 Correct 1 ms 2652 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2904 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 1 ms 2684 KB Output is correct
7 Correct 1 ms 2648 KB Output is correct
8 Correct 1 ms 2652 KB Output is correct
9 Correct 1 ms 2652 KB Output is correct
10 Correct 1 ms 2652 KB Output is correct
11 Correct 1 ms 2652 KB Output is correct
12 Correct 1 ms 3420 KB Output is correct
13 Correct 1 ms 3224 KB Output is correct
14 Correct 1 ms 3420 KB Output is correct
15 Correct 1 ms 3420 KB Output is correct
16 Correct 1 ms 3420 KB Output is correct
17 Correct 1 ms 3420 KB Output is correct
18 Correct 1 ms 3164 KB Output is correct
19 Correct 1 ms 3420 KB Output is correct
20 Correct 1 ms 3420 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2904 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 1 ms 2684 KB Output is correct
7 Correct 1 ms 2648 KB Output is correct
8 Correct 1 ms 2652 KB Output is correct
9 Correct 1 ms 2652 KB Output is correct
10 Correct 1 ms 2652 KB Output is correct
11 Correct 1 ms 2652 KB Output is correct
12 Correct 1 ms 3420 KB Output is correct
13 Correct 1 ms 3224 KB Output is correct
14 Correct 1 ms 3420 KB Output is correct
15 Correct 1 ms 3420 KB Output is correct
16 Correct 1 ms 3420 KB Output is correct
17 Correct 1 ms 3420 KB Output is correct
18 Correct 1 ms 3164 KB Output is correct
19 Correct 1 ms 3420 KB Output is correct
20 Correct 1 ms 3420 KB Output is correct
21 Correct 4 ms 6748 KB Output is correct
22 Correct 5 ms 7004 KB Output is correct
23 Correct 6 ms 7516 KB Output is correct
24 Correct 27 ms 16960 KB Output is correct
25 Correct 26 ms 16984 KB Output is correct
26 Correct 26 ms 16988 KB Output is correct
27 Correct 26 ms 16988 KB Output is correct
28 Correct 17 ms 14172 KB Output is correct