Submission #88664

#TimeUsernameProblemLanguageResultExecution timeMemory
88664turbatEnergetic turtle (IZhO11_turtle)C++14
40 / 100
53 ms632 KiB
#include <bits/stdc++.h> 
using namespace std; 
int n, m, k, t, z, a, b, ans, d[5][1005][22];
bool u[2002][2002];
int main (){
	cin >> n>> m>> k>> t>> z;
	if (n > 1000 && m > 1000) return 0;
	while(k--){
		cin >> a>> b;
		u[a + 1][b + 1] = 1;
	}
	d[2][1][0] = 1;
	for (int i = 1; i <= n + 1;i++){
		for (int j = 1;j <= m + 1;j++)
				for (int o = 0;o <= t;o++){
					if (u[i][j] && o) d[2][j][o] = (d[2][j][o] + d[1][j][o - 1] + d[2][j - 1][o - 1]) % z;
					if (!u[i][j]) d[2][j][o] = (d[2][j][o] + d[1][j][o] + d[2][j - 1][o]) % z;
				}
		for (int l = 1;l <= 2;l++)
			for (int j = 1;j <= m + 1;j++)
				for (int o = 0;o <= t;o++)
					d[l][j][o] = d[l + 1][j][o];
	}
	for (int i = 0;i <= t;i++)
		ans = (ans + d[1][m + 1][i]) % z;
	cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...