//
// Copyright (c) 2021 HyeJin Shin All rights reserved.
//
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
freopen("grid1.inp","r",stdin);
freopen("grid2.out","w",stdout);
int T;
int N, M;
int t,s,k;
cin >>T;
while(T--){
cin >>N>>M>>t>>s>>k;
if(t==1){ //타입 1 : {좌상,우상} {우하,좌하}가 짝을 이룸
int d = (k-1)/M; //d는 1행, 2행, 3행과 같은 행을 나타냄.
if(s==1){ //좌상
if(d%2==0)cout<<k<<endl; //d가 짝수이면 그대로 출력
else cout<<M*2*d+1-k+M<<endl;} //d가 홀수이면 ①번 공식대로 출력 (공식의 번호는 짝을 이루는 것을 보기위해 달아두었습니다.)
else if(s==2) { //우상
if(d%2==1)cout<<k<<endl; //d가 홀수이면 그대로 출력
else cout<<M*2*d+1-k+M<<endl; //d가 짝수이면 ①번 공식대로 출력
}
else if(s==3){ //우하
if(d%2==0)cout<<(M*N+1)-k<<endl; //d가 짝수이면 ②번 공식대로 출력
else cout<<(N*M+M)-2*(M*(d+1)-k)-k<<endl; //d가 홀수이면 ③번 공식대로 출력
}
else if(s==4){ //좌하
if(d%2==1)cout<<(M*N+1)-k<<endl; //d가 홀수이면 ②번 공식대로 출력
else cout<<(N*M+M)-2*(M*(d+1)-k)-k<<endl; //d가 짝수이면 ③번 공식대로 출력
}
}
else if(t==2){ //타입2 : {좌상,좌하} {우상,우하}가 짝을 이룸
int d = (k-1)/N; //d는 1열, 2열, 3열과 같은 열을 나타냄.
int f = (k-1)%N;
if(s==1){ //좌상
if(d%2==0)cout<<d+1+f*M<<endl; //d가 짝수이면 ④번 공식대로 출력
else cout<<d+1+M*(N-(f+1))<<endl; //d가 홀수이면 ⑤번 공식대로 출력
}
else if(s==2){ //우상
if(d%2==0)cout<<M-d+f*M<<endl; //d가 짝수이면 ⑥번 공식대로 출력
else cout<<M-d+M*(N-(f+1))<<endl; //d가 홀수이면 ⑦번 공식대로 출력
}
else if(s==3){ //우하
if(d%2==1)cout<<M-d+f*M<<endl; //d가 홀수이면 ⑥번 공식대로 출력
else cout<<M-d+M*(N-(f+1))<<endl; //d가 짝수이면 ⑦번 공식대로 출력
}
else if(s==4){ //좌하
if(d%2==1)cout<<d+1+f*M<<endl; //d가 홀수이면 ④번 공식대로 출력
else cout<<d+1+M*(N-(f+1))<<endl; //d가 짝수이면 ⑤번 공식대로 출력
}
}
}//while
}
https://github.com/toki0411/Algorithm/blob/main/grid1.cpp