사용한 알고리즘
알고리즘 설명
- 개미가 벽에 부딧치게 되는 시간을 계산한다.
- 벽 앞까지 개미을 움직이게 한 뒤에 개미가 움직일 방향을 계산한다.
- 시간이 모두 사용할때 까지 위를 반복한다.
풀이
// baekjoon 10158 yechan
#include <cstdio>
#include <algorithm>
using namespace std;
int W, H, p, q, t, dx, dy, dist;
// 상하 또는 좌우에 개미가 부딫치게 될때 최소 거리 계산
inline int goToBound(int x, int y) {
return min(dx>0 ? W-x : x, dy>0 ? H-y : y);
}
// 부딧쳤을때 본래 방향에 반대 방향으로 바꿔줌
inline int turnDirect() {
if (!(p-W) || !p) dx*=-1;
if (!(q-H) || !q) dy*=-1;
}
int main() {
scanf("%d%d", &W, &H);
scanf("%d%d", &p, &q);
scanf("%d", &t);
dx = dy = 1;
while (t) {
dist = min(t, goToBound(p, q));
t -= dist;
p += dx*dist;
q += dy*dist;
turnDirect();
}
printf("%d %d\n", p, q);
return 0;
}