CF#234は不参加のため、後日復習。
少し手こずったけど何とか自力で全問正答。
http://codeforces.com/contest/400/problem/C
問題
NxMのグリッドのうち、いくつか飴が置かれたマスがある。
これらのグリッドに対し、A回90度右回転し、B回左右反転し、C回90度左回転した後の飴の位置を答えよ。
解法
A,B,Cの上限は大きいが、回転は4回、反転は2回行うとループする点を考えれば、結局それぞれの実行回数は3回以内で良い。
後は地道に実装するだけ。
ll R,C,P; ll X[100001],Y[100001]; void solve() { int f,i,j,k,l,a,b,c,x,y; cin>>R>>C>>a>>b>>c>>P; FOR(i,P) cin>>Y[i]>>X[i]; FOR(i,P) { x=X[i],y=Y[i]; if(a%4==2) Y[i]=R+1-y,X[i]=C+1-x; if(a%4==3) Y[i]=C+1-x,X[i]=y; if(a%4==1) Y[i]=x,X[i]=R+1-y; } if(a%2==1) swap(R,C); FOR(i,P) if(b%2) X[i]=C+1-X[i]; FOR(i,P) { x=X[i],y=Y[i]; if(c%4==2) Y[i]=R+1-y,X[i]=C+1-x; if(c%4==1) Y[i]=C+1-x,X[i]=y; if(c%4==3) Y[i]=x,X[i]=R+1-y; _P("%lld %lld\n",Y[i],X[i]); } }
まとめ
面倒ではあるが、Div2とはいえ簡単過ぎないか?
この問題はDiv2 Bでもいいと思う。