MAGCARI

MT Matrix

Feb 20th, 2023
743
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. /*
  2.     Task    : _example
  3.     Author  : Phumipat C. [MAGCARI]
  4.     Language: C++
  5.     Created : 20 February 2023 [22:08]
  6. */
  7. #include<bits/stdc++.h>
  8. using namespace std;
  9. int u,v,w,p;
  10. int play(int sz,long long r,long long c){
  11.     if(sz == 1){
  12.         if(r == 1){
  13.             if(c == 1)  return u;
  14.             else        return v;
  15.         }else{
  16.             if(c == 1)  return w;
  17.             else        return p;
  18.         }
  19.     }
  20.     long long half = (1ll << (sz-1));
  21.    
  22.     if(r <= half && c <= half){
  23.         // upper left zone
  24.         return play(sz-1,r,c);
  25.     }else if(r <= half && c > half){
  26.         // upper right zone
  27.         long long newc = c - half;
  28.         return play(sz-1,newc,r);
  29.     }else if(r > half && c <= half){
  30.         // lower left zone
  31.         long long newr = r-half;
  32.         return -play(sz-1,newr,c);
  33.     }else{
  34.         // lower right zone
  35.         long long newr = r-half,newc = c-half;
  36.         return -play(sz-1,newc,newr);
  37.     }
  38. }
  39. int main(){
  40.     cin.tie(0)->sync_with_stdio(0);
  41.     cin.exceptions(cin.failbit);
  42.     long long n,m;
  43.     cin >> n >> m >> u >> v >> w >> p;
  44.     while(m--){
  45.         long long r,c;
  46.         cin >> r >> c;
  47.         cout << play(n,r,c) << '\n';
  48.     }
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment