codeforces C. Inna and Huge Candy Matrix

http://codeforces.com/problemset/problem/400/C

题意:给你一个n*m的矩阵,然后在矩阵中有p个糖果,给你每个糖果的初始位置,然后经过x次顺时针反转,y次旋转,z次逆时针反转,问最后每个糖果的位置。

思路:推出顺时针反转、旋转、逆时针反转的坐标的变化即可。

 1 #include <cstdio>

 2 #include <cstring>

 3 #include <cmath>

 4 #include <iostream>

 5 #define maxn 100010

 6 #include <algorithm>

 7 using namespace std;

 8 

 9 int n,m,x,y,z,k;

10 struct node

11 {

12     int x,y;

13 } p[maxn];

14 

15 int main()

16 {

17     scanf("%d%d%d%d%d%d",&n,&m,&x,&y,&z,&k);

18     for(int i=1; i<=k; i++)

19     {

20         scanf("%d%d",&p[i].x,&p[i].y);

21     }

22     x%=4;

23     y%=2;

24     z%=4;

25     for(int i=1; i<=k; i++)

26     {

27         int nn=n,mm=m,xx,yy;

28         for(int j=1; j<=x; j++)

29         {

30             xx=p[i].x;

31             yy=p[i].y;

32             p[i].x=yy;

33             p[i].y=nn-xx+1;

34             swap(nn,mm);

35         }

36         for(int j=1; j<=y; j++)

37         {

38             xx=p[i].x;

39             yy=p[i].y;

40             p[i].x=xx;

41             p[i].y=mm-yy+1;

42         }

43         for(int j=1; j<=z; j++)

44         {

45             xx=p[i].x;

46             yy=p[i].y;

47             p[i].x=mm-yy+1;

48             p[i].y=xx;

49             swap(nn,mm);

50         }

51     }

52     for(int i=1; i<=k; i++)

53     {

54         printf("%d %d\n",p[i].x,p[i].y);

55     }

56     return 0;

57 }
View Code

 

你可能感兴趣的:(codeforces)