-
https://www.acmicpc.net/problem/1459
1459번: 걷기
세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 (
www.acmicpc.net
<문제>
대각선으로 이동가능한 경우를 먼저 생각해보자.
(1) (3, 3)같은 경우에는 3번 대각선으로 이동할 수 있다.
(2) (4, 0)도 마찬가지로 지그재그로 4번 이동할 수 있다.
2*w>s인 경우에는 최대한 대각선으로 이동해야 하므로, (1)을 먼저 적용한다.
다만 (2)는 (w>s)인 경우에만 이득이 되므로, 그 부분에 유의할 필요가 있다.
2*w<=s인 경우에는 축에 평행하게 이동하면 되므로, w*(x+y)가 정답이 된다.
<소스코드>
12345678910111213141516171819202122232425#include <bits/stdc++.h>using namespace std;using ll = long long;ll x, y, w, s, ans;int main(void) {cin >> x >> y >> w >> s;if (2 * w > s) {if (x > 0 && y > 0) {ll t = min(x, y);x -= t;y -= t;ans += t * s;}if (x < y) swap(x, y);if (x % 2 == 1) {x--;ans += w;}if (x != 0) ans += min(w, s) * x;} elseans = (x + y) * w;cout << ans;return 0;}cs 'BOJ' 카테고리의 다른 글
[20944] 팰린드롬 척화비 (0) 2021.12.07 [21772] 가희의 고구마 먹방 (0) 2021.12.05 [3018] 캠프파이어 (0) 2021.12.03 [1100] 하얀 칸 (0) 2021.12.03 [1072] 게임 (0) 2021.12.02