알고리즘/Implementation

boj, 백준 ) 1049 기타줄 (C++)

KIBBOMI 2020. 1. 28. 12:49
#include <iostream>
#include <algorithm>
using namespace std;

int line_set[100];
int line_single[100];

int main()
{
	int n, m;
	cin >> n >> m;

	for (int i = 0; i < m; ++i)
		cin >> line_set[i] >> line_single[i];

	sort(line_set, line_set + m);
	sort(line_single, line_single + m);

	int ret = 0;

	if (line_set[0] < line_single[0] * 6)
	{
		//세트로 사는게 이득

		if (n % 6 == 0)
		{
			int num = n / 6;
			ret = num * line_set[0];
		}
		else
		{
			//최대한 세트로 사고 나머지는 낱개로삼.
			// 그런데 낱개 5개 vs 세트 6개 이것도 구분해야함.

			int singlenum = n % 6;	//낱개로 사야하는 item수

			if (singlenum * line_single[0] > line_set[0])
			{
				//갯수는 초과되지만 세트가 더 저렴.
				int num = n / 6 +1;
				ret = num * line_set[0];
			}
			else
			{
				int num = n / 6;
				ret = num * line_set[0];
				ret += singlenum * line_single[0];
			}

		}
	}
	else
	{
		//낱개로 사는게 이득
		ret = line_single[0] * n;
	}

	cout << ret;
	return 0;
}