MAGCARI

MT Matrix

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