문제
링크
풀이
#include <algorithm>
#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
inline long long calc1(const vector<long long> &v) {
long long ret = 1e18;
for (int i=0; i<5; i++) for (int j=i+1; j<6; j++) {
if (i + j == 5) continue;
ret = min(ret, v[i] + v[j]);
}
return ret;
}
inline long long calc2(const vector<long long> &v) {
long long ret = 1e18;
for (int i=0; i<4; i++) for (int j=i+1; j<5; j++) for (int k=j+1; k<6; k++) {
if (i + j == 5 || i + k == 5 || j + k == 5) continue;
ret = min(ret, v[i] + v[j] + v[k]);
}
return ret;
}
void solve(void) {
long long n; cin >> n;
vector<long long> v(6);
for (int i=0; i<6; i++) cin >> v[i];
if (n == 1) {
cout << accumulate(v.begin(), v.end(), 0LL) - *max_element(v.begin(), v.end());
return;
}
cout << *min_element(v.begin(), v.end())*(n-2)*(5*n-6) + calc1(v)*(8*n-12) + calc2(v)*4;
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}