백준 문제풀이/골드5

백준 1461번 - 도서관

void_melody 2022. 8. 4. 15:00

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

 

1461번: 도서관

세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n, m;
	int sum = 0;
	cin >> n >> m;
	int zero_index = 0;
	vector<int> arr(n);
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}

	sort(arr.begin(), arr.end());

	for (int i = 0; i < n; i++)
	{
		if (arr[i] < 0)
			zero_index++;
		else
			break;
	}

	for (int i = 0; i < zero_index; i += m)
	{
		sum += abs(arr[i] * 2);
	}
	for (int i = n - 1; i >= zero_index; i -= m) 
	{
		sum += (arr[i] * 2);
	}

	
	sum -= max(abs(arr[0]), abs(arr[n - 1]));
	
	cout << sum;
	return 0;

}

예외처리로 받은 값들이 다 음수 또는 양수인 것을 생각해야해서 

마지막에 뺀 값을 할 때 둘 다 절댓값을 붙였다.