제출 #88674

#제출 시각아이디문제언어결과실행 시간메모리
88674Badral힘 센 거북 (IZhO11_turtle)C++17
40 / 100
149 ms98372 KiB
#include<bits/stdc++.h>
#define maxn 1005
#define mp make_pair
#define pb push_back
#define ff first
#define ss second
using namespace std;
typedef long long ll;
int ans;
bool a[2000002];
int b[2000002][25];
int n, m, k1, t, z;
inline int lol(int X, int Y) {
	return (X * (m + 1ll)) + Y;
}
int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cin >>n >>m >>k1 >>t >>z;
	while(k1--) {
		int x, y;
		cin >>x >>y;
		a[lol(x, y)] = 1;
	}
	b[lol(0, 0)][0] = 1;
	for(int i = 0; i <= n; i++) {
		for(int j = 0; j <= m; j++) {
			if(i == 0 && j == 0) {continue; }
			if(a[lol(i, j)] == 1) {
				for(int o = 1; o <= t; o++) {
					if(i != 0)
						b[lol(i, j)][o] += b[lol(i-1, j)][o - 1];
					if(j != 0)
						b[lol(i, j)][o] += b[lol(i, j-1)][o - 1];
					b[lol(i, j)][o] %= z;
				}
			}
			else {
				for(int o = 0; o <= t; o++) {
					if(i != 0)
						b[lol(i, j)][o] += b[lol(i - 1, j)][o];
					if(j != 0)
						b[lol(i, j)][o] += b[lol(i, j - 1)][o];
					b[lol(i, j)][o] %= z;
				}
			}
		}
	}
	for(int i = 0; i <= 20; i++) ans += b[lol(n, m)][i], ans %= z;
	cout<<ans%z;
}
#Verdict Execution timeMemoryGrader output
Fetching results...