그럴듯한 개발 블로그
반응형
https://www.acmicpc.net/problem/1744
// 수 묶기

#include <iostream>
#include <vector>
#include <algorithm>
using namespace	std;

int	main()
{
	ios::sync_with_stdio(0),cin.tie(0);

	int	n, zero = 0,res = 0, plus_idx = -1;

	cin >> n;
	vector<int>	plus, minus;

	for (int i = 0; i < n; i++)
	{
		int	num;
		cin >> num;
		if (num == 1) // 1은 곱하면 쌉손해
			res++;
		else if (num == 0) // 0은 음수가 홀수일때 하나 처리해 주기 위해 필요
			zero = 1;
		else if (num < 0)
			minus.push_back(num);
		else if (num > 0)
			plus.push_back(num);
	}
	if (minus.size())
		sort(minus.begin(), minus.end());
	if (plus.size())
		sort(plus.begin(), plus.end());
	if (minus.size() % 2)
	{
		if (zero == 0)
			res += minus.back();
		minus.pop_back();
	}
	for (int i = 0; i < minus.size(); i += 2)
		res += minus[i] * minus[i + 1];
	int i = 0;
	if (plus.size() % 2)
	{
		res += plus.front();
		i = 1;
	}
	while (i < plus.size())
	{
		res += plus[i] * plus[i + 1];
		i += 2;
	}
	cout << res;
}
반응형
profile

그럴듯한 개발 블로그

@donghyk2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!