Submission #873254

#TimeUsernameProblemLanguageResultExecution timeMemory
873254VahanAbraham힘 센 거북 (IZhO11_turtle)C++14
30 / 100
2092 ms4700 KiB
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <sstream>
#include <map>
#include <stack>
#include <set>
#include <queue>
#include <unordered_set>
#include <unordered_map>
#include <math.h>
#include <cmath>
#include <vector>
#include <iomanip>
#include <random>
#include <chrono>
using namespace std;

#define ll long long
#define fr first
#define sc second
#define pb push_back
#define US freopen("milkvisits.in", "r", stdin); freopen("milkvisits.out", "w", stdout);

ll gcd(ll a, ll b)
{
    if (a == 0 || b == 0) {
        return  max(a, b);
    }
    if (a <= b) {
        return gcd(a, b % a);
    }
    else {
        return gcd(a % b, b);
    }
}
ll lcm(ll a, ll b) {
    return (a / gcd(a, b)) * b;
}

const int N = 300005;
const ll oo = 1000000000000000, MOD = 998244353;

pair<ll, ll> p[N];
bool bl[1005][1005];
ll dp[5][100005][21];

void solve() {
    int n, m, k, t;
    ll mod;
    cin >> n >> m >> k >> t >> mod;
    for (int i = 1; i <= k; ++i) {
        cin >> p[i].fr >> p[i].sc;
    }
    if (n <= 1000 && m <= 1000) {
        for (int i = 1; i <= k; ++i) {
            bl[p[i].fr + 1][p[i].sc + 1];
        }
        dp[2][1][0] = 1;
        for (int i = 1; i <= n + 1; ++i) {
            for (int j = 1; j <= m + 1; j++) {
                for (int cnt = 0 + bl[i][j]; cnt <= t - bl[i][j]; ++cnt) {
                    dp[2][j][cnt] += dp[1][j][cnt - bl[i][j]], dp[2][j][cnt] %= mod;
                    dp[2][j][cnt] += dp[2][j - 1][cnt - bl[i][j]], dp[2][j][cnt] %= mod;
                }
            }
            for (int j = 1; j <= m + 1; j++) {
                for (int cnt = 0; cnt <= t; ++cnt) {
                    if (0 + bl[i][j] <= cnt && cnt <= t - bl[i][j]) {
                        dp[1][j][cnt] = dp[2][j][cnt];
                    }
                    else {
                        dp[1][j][cnt] = 0;
                    }
                    dp[2][j][cnt] = 0;
                }
            }
        }
        ll ans = 0;
        for (int i = 0; i <= t; ++i) {
            ans += dp[1][m + 1][i], ans %= mod;
        }
        cout << ans << endl;
    }
    else {
        while (1) {

        }
    }
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    //US
    int tt = 1;
    //cin >> tt;
    while (tt--) {
        solve();
    }
}

Compilation message (stderr)

turtle.cpp: In function 'void solve()':
turtle.cpp:60:40: warning: statement has no effect [-Wunused-value]
   60 |             bl[p[i].fr + 1][p[i].sc + 1];
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...