#include #include typedef long long int int64; void matmul(int64 *c,int64 *a,int64 *b){ int64 tmp[9]={0}; int i,j,k; for(i=0;i<3;i++){ for(k=0;k<3;k++){ for(j=0;j<3;j++){ tmp[i*3+j]+=a[i*3+k]*b[k*3+j]; } } } for(i=0;i<9;i++) c[i]=tmp[i]; } void run(void){ int n,px,py; scanf("%d%d%d",&n,&px,&py); int *op=(int *)calloc(n,sizeof(int)); int *d=(int *)calloc(n,sizeof(int)); int i; for(i=0;i=0;i--){ if(op[i]==3){ int64 b[]={1,0,0, 0,0,1, 0,-1,0}; matmul(mat,mat,b); } else if(op[i]==1){ int64 b[]={1,0,0, d[i],1,0, 0,0,1}; matmul(mat,mat,b); } else { int64 b[]={1,0,0, 0,1,0, d[i],0,1}; matmul(mat,mat,b); } x[i]=mat[3]+px*mat[4]+py*mat[5]; y[i]=mat[6]+px*mat[7]+py*mat[8]; } for(i=0;i