수학적으로 계산만 하면 되는 문제라 간단하게 풀린것 같다.
문제에서 강토가 기타줄을 사는 경우의 수는 총 3가지이다.
이렇게 경우의 수를 나누고 나면 이제 그 방법대로 코드를 작성하면 되기때문에 간단하게 풀린다.
#include <iostream>
#include <deque>
#include <vector>
#include <string>
#include <string.h>
#include <sstream>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main() {
int answer = 0;
int n;
int m;
cin >> n >> m;
int arr[50][2];
for (int i = 0; i < m; i++) {
cin >> arr[i][0] >> arr[i][1];
}
int min = 1000000;
int div = n / 6;
int mod = n % 6;
for (int i = 0; i < m; i++) {
int tmp = arr[i][1] * n;
if (tmp < min)
min = tmp;
}
int result1 = min;
min = 1000000;
for (int i = 0; i < m; i++) {
int tmp = arr[i][1] * mod;
if (tmp < min)
min = tmp;
}
answer += min;
min = 1000000;
for (int i = 0; i < m; i++) {
int tmp = arr[i][0] * div;
if (tmp < min)
min = tmp;
}
answer += min;
int result2 = answer;
min = 1000000;
int bundle = n / 6 + 1;
for (int i = 0; i < m; i++) {
int tmp = arr[i][0] * bundle;
if (tmp < min)
min = tmp;
}
int result3 = min;
answer = result1 < result2 ? result1 : result2;
answer = answer < result3 ? answer : result3;
cout << answer << endl;
}