티스토리 뷰

백준

백준 소스코드 [C++] 1041 주사위

Hani_Levenshtein 2020. 8. 17. 07:33

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

 

1041번: 주사위

첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수�

www.acmicpc.net

백준 소스코드 [C++] 1041 주사위

#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int n,sum=0,m;
	cin >> n;
	vector <int> dice;
	for (int i = 0;i < 6;i++) {
		cin >> m;
		dice.push_back(m);
		sum += m;
	}
	long long first = *min_element(dice.begin(), dice.end());

	int arr[12] = { dice[0] + dice[1],
		dice[0] + dice[2],
		dice[0] + dice[3],
		dice[0] + dice[4],
		dice[1] + dice[2],
		dice[1] + dice[3],
		dice[1] + dice[5],
		dice[2] + dice[4],
		dice[2] + dice[5],
		dice[3] + dice[4],  
		dice[3] + dice[5],
		dice[4] + dice[5]
	};
	long long second = *min_element(arr, arr + 12);

	int arrr[8] = { dice[0] + dice[1] + dice[2],
		dice[0] + dice[1] + dice[3],
		dice[0] + dice[2] + dice[4],
		dice[0] + dice[3] + dice[4],
		dice[1] + dice[2] + dice[5],
		dice[1] + dice[3] + dice[5],
		dice[2] + dice[4] + dice[5],
		dice[3] + dice[4] + dice[5]
	};
	long long third = *min_element(arrr, arrr + 8);
	if (n == 1) cout << sum - *max_element(dice.begin(), dice.end());
	else cout << (second * 4 + first * 4 * (n - 2)) * (n - 1) + first*(n - 2)*(n - 2) + second * 4 * (n - 2) + third * 4;
	return 0;
}
댓글