Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Task : _example
- Author : Phumipat C. [MAGCARI]
- Language: C++
- Created : 22 February 2023 [20:35]
- */
- #include<bits/stdc++.h>
- using namespace std;
- int u,v,w,p;
- int findValue(int n,long long r,long long c){
- //base case
- if(n == 1){
- if(r == 1){
- if(c == 1) return u;
- else if(c == 2) return v;
- }else if(r == 2){
- if(c == 1) return w;
- else if(c == 2) return p;
- }
- }
- //operation
- long long half = (1ll << (n-1));
- if(r <= half && c <= half){
- // upper left zone
- return findValue(n-1,r,c);
- }else if(r > half && c <= half){
- // lower left zone
- r-=half;
- return -findValue(n-1,r,c);
- }else if(r <= half && c > half){
- //upper right zone
- c-=half;
- return findValue(n-1,c,r);
- }else{
- // lower right zone
- r-=half,c-=half;
- return -findValue(n-1,c,r);
- }
- }
- int main(){
- int n,m;
- scanf("%d %d %d %d %d %d",&n,&m,&u,&v,&w,&p);
- while(m--){
- long long r,c;
- scanf("%ld %lld",&r,&c);
- int ans = findValue(n,r,c);
- printf("%d\n",ans);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment