문제 링크: https://www.acmicpc.net/problem/1049
제일 싼 6개 패키지와 낱개의 가격을 저장합니다. 브랜드는 두개가 달라도 상관없습니다.
그 다음 낱개*6개가 6개 패키지보다 싸면 낱개로 전부 사면 되니까 N*낱개 가격을 출력합니다.
6개 패키지가 더 싸다면 끊어진 줄이 6의 배수가 아닐 경우를 생각해봅시다
- 1) 줄이 남을 때까지 6개 패키지를 구매
- 2) 줄이 6개 미만이 될 때까지 6개 패키지를 구매하고, 나머지는 낱개로 사기
뭐가 더 싸게 먹힐지 모르니 두 경우 모두 계산해서 min값을 출력하면 됩니다
#include <bits/stdc++.h>
using namespace std;
const int INF = 987654321;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int n, m;
cin >> n >> m;
int min_sixpack = INF, min_single = INF;
while (m--) {
int a, b;
cin >> a >> b;
min_sixpack = min(min_sixpack, a);
min_single = min(min_single, b);
}
if (min_single * 6 <= min_sixpack) {
cout << min_single * n << '\n';
}
else {
int mn = min(
(n/6)*min_sixpack + (n%6)*min_single,
((n/6)+1)*min_sixpack
);
cout << mn << '\n';
}
return 0;
}
반응형
'Online Judge > 백준' 카테고리의 다른 글
[백준][C++] 18249: 욱제가 풀어야 하는 문제 (0) | 2020.08.10 |
---|---|
[백준][C++] 10610: 30 (0) | 2020.08.09 |
[백준][C++] 5462: POI (0) | 2020.08.07 |
[백준][C++] 5463: 건포도 (0) | 2020.08.06 |
[백준][C++] 11051: 이항 계수 2 (0) | 2020.08.05 |