안녕하세요. 오늘은 분수를 만들거예요.

문제

https://www.acmicpc.net/problem/2863

아이디어

일단 정답값이 0이상 3이하임은 자명합니다.
하나씩 돌려가면서 최댓값을 구해주면 됩니다.

소스코드

#include <iostream>
#include <algorithm>
using namespace std;

double arr[2][2] = { 0 };
void turn()
{
    swap(arr[0][0], arr[1][0]);
    swap(arr[1][0], arr[1][1]);
    swap(arr[1][1], arr[0][1]);
}
double now()
{
    return arr[0][0] / arr[1][0] + arr[0][1] / arr[1][1];
}

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    cin >> arr[0][0] >> arr[0][1] >> arr[1][0] >> arr[1][1];

    double mx = now();
    int ans = 0;
    for (int i = 1; i < 4; i++)
    {
        turn();
        if (now() > mx)
        {
            mx = now();
            ans = i;
        }
    }
    cout << ans;
}


감사합니다.

0개의 댓글