Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- $$$$$$$\ $$\ $$$$$$$\
- $$ __$$\ \__| $$ __$$\
- $$ | $$ | $$$$$$\ $$$$$$\ $$\ $$$$$$$\ $$ | $$ | $$$$$$\ $$$$$$\ $$$$$$$\ $$$$$$\
- $$$$$$$\ |$$ __$$\ $$ __$$\ $$ |$$ _____|$$$$$$$\ | \____$$\ $$ __$$\ $$ _____|\____$$\
- $$ __$$\ $$ / $$ |$$ | \__|$$ |\$$$$$$\ $$ __$$\ $$$$$$$ |$$ | \__|$$ / $$$$$$$ |
- $$ | $$ |$$ | $$ |$$ | $$ | \____$$\ $$ | $$ |$$ __$$ |$$ | $$ | $$ __$$ |
- $$$$$$$ |\$$$$$$ |$$ | $$ |$$$$$$$ |$$$$$$$ |\$$$$$$$ |$$ | \$$$$$$$\\$$$$$$$ |
- \_______/ \______/ \__| \__|\_______/ \_______/ \_______|\__| \_______|\_______|
- */
- #include <bits/stdc++.h>
- #include <unordered_map>
- using namespace std;
- #define pb push_back
- #define mp make_pair
- #define pii pair <int,int>
- #define si pair<string, int>
- #define is pair<int, string>
- #define in insert
- #define X first
- #define Y second
- #define _ << " " <<
- #define sz(x) (int)x.size()
- #define all(a) (a).begin(),(a).end()
- #define FOR(i, a, b) for (int i = a; i < b; ++i)
- #define REP(i, n) FOR(i, 0, n)
- #define BITS(x) __builtin_popcount(x)
- #define mset memset
- #define mcpy memcpy
- typedef long long ll;
- typedef long double ld;
- typedef vector <int> vi;
- typedef vector <pii> vpi;
- typedef vector <ll> vll;
- typedef vector<pair<string, int>> vsi;
- typedef vector<pair<int, string>> vis;
- //((float) t)/CLOCKS_PER_SEC
- const int MOD = 1e9 + 7;
- const int PI = acos(-1);
- const int LOG = 32;
- inline int sum(int a, int b){
- if (a + b >= MOD)
- return a + b - MOD;
- if (a + b < 0)
- return a + b + MOD;
- return a + b;
- }
- inline void add(int &a, int b){
- a = sum(a, b);
- }
- inline int mul(int a, int b){
- return (ll)a * (ll)b % MOD;
- }
- ll n, m, k, mat[25][25], sol;
- unordered_map <pair <pii, ll>, ll> DP, bio;
- ll dp(int x, int y, ll sum){
- if (x >= n || y >= m)
- return 0;
- sum ^= mat[x][y];
- if (x == n - 1 && y == m - 1){
- if (sum == k)
- return 1;
- else
- return 0;
- }
- if (bio[{{x, y}, sum}])
- return DP[{{x, y}, sum}];
- bio[{{x, y}, sum}]++;
- ll ret = 0;
- ret = (dp(x + 1, y, sum) + dp(x, y + 1, sum));
- DP[{{x, y}, sum}] = ret;
- return ret;
- }
- int main () {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- cout.tie(0);
- cin >>n>>m>>k;
- FOR(i, 0, n){
- FOR(j, 0, m){
- cin >>mat[i][j];
- }
- }
- cout <<dp(0, 0, 0)<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement