Submission #683397

# Submission time Handle Problem Language Result Execution time Memory
683397 2023-01-18T10:18:13 Z nifeshe Energetic turtle (IZhO11_turtle) C++17
30 / 100
286 ms 94196 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

//#pragma GCC target ("avx2")
//#pragma GCC optimize ("O3")
//#pragma GCC optimize ("unroll-loops")
//#pragma comment (linker, "/STACK: 16777216")

#define f first
#define s second
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sz(x) ((int)(x).size())
#define pb push_back
#define mp make_pair
#define int long long

using namespace std;
using namespace __gnu_pbds;

template <typename T> inline bool umax(T &a, const T &b) { if(a < b) { a = b; return 1; } return 0; }
template <typename T> inline bool umin(T &a, const T &b) { if(a > b) { a = b; return 1; } return 0; }
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
template <typename T> using oset = tree<T, null_type, less <T>, rb_tree_tag, tree_order_statistics_node_update>;

ll mod = 998244353;
const ll base = 1e6 + 5;
const ll inf = 1e18;
const int MAX = 3e3;
const int lg = 20;

random_device rd;
mt19937 gen(rd());
uniform_int_distribution<ll> dis(1, inf);

void add(int &a, int b) {
    a += b;
    if(a >= mod) a -= mod;
    if(a < 0) a += mod;
}

int C[MAX][MAX];

void solve() {
    int n, m, k, t;
    cin >> n >> m >> k >> t >> mod;
    for(int i = 0; i < MAX; i++) {
        C[i][0] = C[i][i] = 1;
        for(int j = 1; j < i; j++) {
            C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % mod;
        }
    }
    vector<pair<int, int>> a(k);
    for(auto &[x, y] : a) {
        cin >> x >> y;
    }
    sort(all(a));
    int ans = C[n + m][n];
    vector<int> ways((1 << k));
    for(int mask = 0; mask < (1 << k); mask++) {
        vector<pair<int, int>> need = {{0, 0}};
        for(int i = 0; i < k; i++) {
            if(mask >> i & 1) {
                need.pb(a[i]);
            }
        }
        need.pb({n, m});
        int sz = sz(need);
        int add = 1;
        for(int i = 1; i < sz; i++) {
            if(need[i - 1].s > need[i].s) {
                add = 0;
                break;
            }
            int x = need[i].f - need[i - 1].f, y = need[i].s - need[i - 1].s;
            add = (add * C[x + y][y]) % mod;
        }
        ways[mask] = add;
    }
    for(int i = 0; i < k; i++) {
        for(int mask = 0; mask < (1 << k); mask++) {
            if(mask >> i & 1) continue;
            int sign = (__builtin_popcount(mask) & 1? 1 : -1);
            add(ways[mask], sign * ways[mask | (1 << i)]);
        }
    }
    for(int mask = 0; mask < (1 << k); mask++) {
        if(__builtin_popcount(mask) <= t) continue;
        int sign = (__builtin_popcount(mask) & 1? 1 : -1);
        add(ans, -1 * ways[mask]);
    }
    cout << ans << '\n';
}

signed main() {
//    freopen("kthpath.in", "r", stdin); freopen("kthpath.out", "w", stdout);
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int ttt = 1;
//    cin >> ttt;
    while(ttt--) {
        solve();
    }
    return 0;
}

Compilation message

turtle.cpp: In function 'void solve()':
turtle.cpp:92:13: warning: unused variable 'sign' [-Wunused-variable]
   92 |         int sign = (__builtin_popcount(mask) & 1? 1 : -1);
      |             ^~~~
# Verdict Execution time Memory Grader output
1 Correct 40 ms 46412 KB Output is correct
2 Incorrect 38 ms 46436 KB Output isn't correct
3 Correct 39 ms 46408 KB Output is correct
4 Correct 47 ms 46684 KB Output is correct
5 Correct 286 ms 54604 KB Output is correct
6 Incorrect 38 ms 46492 KB Output isn't correct
7 Correct 53 ms 46952 KB Output is correct
8 Correct 38 ms 46388 KB Output is correct
9 Runtime error 95 ms 94044 KB Execution killed with signal 11
10 Runtime error 94 ms 94052 KB Execution killed with signal 11
11 Runtime error 98 ms 94196 KB Execution killed with signal 11
12 Runtime error 97 ms 94104 KB Execution killed with signal 11
13 Runtime error 105 ms 94048 KB Execution killed with signal 11
14 Runtime error 98 ms 94136 KB Execution killed with signal 11
15 Runtime error 97 ms 94072 KB Execution killed with signal 11
16 Runtime error 98 ms 94140 KB Execution killed with signal 11
17 Runtime error 103 ms 94096 KB Execution killed with signal 11
18 Runtime error 96 ms 94040 KB Execution killed with signal 11
19 Runtime error 96 ms 94068 KB Execution killed with signal 11
20 Runtime error 104 ms 94104 KB Execution killed with signal 11