这个题目当时比赛的时候就想清楚只要找旋转的规律就可以了,然后写出旋转x,y,z,x和z太大求余4即可。y求余2即可。明明有想到旋转的时候n和m的大小会颠倒,后来不知道为什么太烦,嫌麻烦就没写吧。反正没过就睡觉去了。晚上就做了一个关于动物园的噩梦!!!有我最怕的蜘蛛,好大好大,海陆空都可以行走的,还有坐骑佬这个煞笔去吵醒蜘蛛王,结果一直跑一直跑,结果醒来已经10点多钟了,全身都湿了,好了,上午的课都翘了。好吧,言归题目,只要每次x,z旋转的时候加上n和m的变化就可以AC了。。。风吹鸡鸡蛋蛋凉。。。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <queue>
#include <map>
#include <stack>
#include <list>
#include <vector>
using namespace std;
//#define DEBUG
struct node
{
__int64 x,y;
}a[100010];
int main()
{
#ifdef DEBUG
freopen("cin.txt", "r", stdin);
freopen("cout.txt", "w", stdout);
#endif
__int64 n,m,x,y,z;
int i,p;
memset(a,0,sizeof(a));
scanf("%I64d %I64d %I64d %I64d %I64d %d",&n,&m,&x,&y,&z,&p);
for (i=1;i<=p;i++)
scanf("%I64d %I64d",&a[i].x,&a[i].y);
x%=4;
while (x--)
{
for (i=1;i<=p;i++)
{
int xx=a[i].x;
int yy=a[i].y;
a[i].x=yy;
a[i].y=n-xx+1;
}
int t=m;
m=n;
n=t;
}
y=y%2;
if (y)
for (i=1;i<=p;i++)
a[i].y=m-a[i].y+1;
z%=4;
while (z--)
{
for (i=1;i<=p;i++)
{
int xx=a[i].x;
int yy=a[i].y;
a[i].y=xx;
a[i].x=m-yy+1;
}
int t=m;
m=n;
n=t;
}
for (i=1;i<=p;i++)
printf("%I64d %I64d\n",a[i].x,a[i].y);
return 0;
}