반응형
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;
}
반응형
'<algorithm> > 백준' 카테고리의 다른 글
백준 1920 수 찾기 c++ (0) | 2023.09.11 |
---|---|
백준 10816 숫자 카드 2 c++ (0) | 2023.09.11 |
백준 1620 (c++) 나는야 포켓몬 마스터 이다솜 (0) | 2023.04.06 |
백준 7785 (c++) 회사에 있는 사람 (0) | 2023.04.06 |
백준 1700 (c++) 멀티탭 스케줄링 (0) | 2023.03.22 |