넓이의 참외밭에서 나는 참외의 수가 주어지고, 반시계 방향으로 육각형 밭의 변의 방향과 길이가 주어질 때, 밭에서 나는 참외의 수를 구해야 한다.
가장 긴 가로변과 세로변은 인접해 있다는 것을 문제의 그림을 보면 쉽게 알 수 있습니다.
가장 긴 가로변과 가징 긴 세로변으로부터, 이 둘이 인접하지 않은 방향으로 두 번 건너뛰면 육각형에서 안쪽으로 들어간 가로와 세로 부분을 쉽게 찾을 수 있습니다.
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int k, w = 0, h = 0, wi = 0, hi = 0;
cin >> k;
vector<pair<int, int>> v;
for (int i = 0; i < 6; i++)
{
int d, l;
cin >> d >> l;
if (d <= 2)
{
if (l > w)
w = l, wi = i;
}
else
{
if (l > h)
h = l, hi = i;
}
v.push_back({ d, l });
}
int pos = wi;
if (wi + 1 == hi || wi == 5 && hi == 0)
pos = hi;
cout << (w * h - v[(pos + 2) % 6].second * v[(pos + 3) % 6].second) * k;
return 0;
}