나의 브을로오그으

[c++] 18111번 : 마인크래프트 본문

알고리즘/BaekJoon

[c++] 18111번 : 마인크래프트

__jhp_+ 2022. 5. 17. 15:16

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

 

18111번: 마인크래프트

팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게

www.acmicpc.net

#include <iostream>

using namespace std;

#define MAX_HEIGHT		256

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int blocks[MAX_HEIGHT + 1] = { 0, };
	int time = 2 * 256 * 500 * 500 + 1, height = 0;
	int N, M, B, T;
	cin >> N >> M >> B;
	for (int i = 0; i < N * M; ++i)
	{
		cin >> T;
		blocks[T]++;
	}

	for (int h = 0; h <= MAX_HEIGHT; ++h)
	{
		int needBlock = 0, gainBlock = 0;
		for (int i = 0; i < h; ++i) needBlock += (h - i) * blocks[i];
		for (int i = MAX_HEIGHT; i > h; --i) gainBlock += (i - h) * blocks[i];

		T = needBlock + gainBlock * 2;
		if (B - needBlock + gainBlock < 0) break;
		if (time < T) break;
		time = T;
		height = h;
	}

	cout << time << ' ' << height << '\n';
	return 0;
}

'알고리즘 > BaekJoon' 카테고리의 다른 글

[c++] 1012번 : 유기농 배추  (0) 2022.05.18
[c++] 1003번 : 피보나치 함수  (0) 2022.05.18
[c++] 15829번 : Hashing  (0) 2022.05.16
[c++] 11866번 : 요세푸스 문제 0  (0) 2022.05.12
[c++] 11651번 : 좌표 정렬하기2  (0) 2022.05.12