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

 

posted @ 2015-02-01 19:16  null1019  阅读(218)  评论(0编辑  收藏  举报