首页 > 代码库 > codeforces C. Inna and Huge Candy Matrix

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 node11 {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 C. Inna and Huge Candy Matrix