Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define llu long long unsigned
  4.  
  5. using namespace std;
  6.  
  7. llu n, m, k;
  8.  
  9. llu matrix[21][21];
  10.  
  11. map<llu, llu> meet[21][21];
  12.  
  13. void dfs_crescente(int i, int j, int x){
  14.     if (i + j == (n + m) / 2 - 1){
  15.         meet[i][j][x ^ matrix[i][j]]++;
  16.     }
  17.     if (i + 1 < n){
  18.         dfs_crescente(i + 1, j, x ^ matrix[i][j]);
  19.     }
  20.     if (j + 1 < m){
  21.         dfs_crescente(i, j + 1, x ^ matrix[i][j]);
  22.     }
  23. }
  24.  
  25. llu cont = 0;
  26.  
  27. void dfs_decrescente(int i, int j, int x){
  28.     if (i + j == (n + m) / 2 - 1){
  29.         cont += meet[i][j][x ^ k];
  30.     }
  31.     if (i - 1 >= 0){
  32.         dfs_decrescente(i - 1, j, x ^ matrix[i][j]);
  33.     }
  34.     if (j - 1 >= 0){
  35.         dfs_decrescente(i, j - 1, x ^ matrix[i][j]);
  36.     }  
  37. }
  38.  
  39. int main(){
  40.  
  41.     cin >> n >> m >> k;
  42.  
  43.     for (int i = 0; i < n; i++){
  44.         for (int j = 0; j < m; j++){
  45.             cin >> matrix[i][j];
  46.         }
  47.     }
  48.  
  49.     dfs_crescente(0, 0, 0);
  50.     dfs_decrescente(n - 1, m - 1, 0);
  51.  
  52.     cout << cont << endl;
  53.  
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement