MAGCARI

MT Matrix

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