求助CF797B Odd sum
  • 板块学术版
  • 楼主happybob
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/6/10 18:30
  • 上次更新2023/11/4 22:03:26
查看原帖
求助CF797B Odd sum
332914
happybob楼主2021/6/10 18:30
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e5 + 5;
int a[N];

int main()
{
	ios::sync_with_stdio(false);
	int n, ans = 0, cnt = 0;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
		cnt += (a[i] > 0 && (a[i] & 1));
	}
	sort(a + 1, a + n + 1, greater<int>());
	if (cnt == 0)
	{
		for (int i = 1; i <= n; i++)
		{
			if (a[i] < 0 && (a[i] & 1))
			{
				ans = a[i];
				break;
			}
		}
		for (int i = 1; i <= n; i++)
		{
			if (a[i] > 0)
			{
				ans += a[i];
			}
			else break;
		}
	}
	else if (cnt & 1)
	{
		for (int i = 1; i <= n; i++)
		{
			if (a[i] <= 0)
			{
				break;
			}
			ans += a[i];
		}
	}
	else if (!(cnt & 1))
	{
		int cnt_second = 0;
		for (int i = 1; i <= n; i++)
		{
			if (a[i] <= 0)
			{
				break;
			}
			cnt_second += a[i] & 1;
			if (cnt_second <= cnt - 1 && (a[i] & 1))
			{
				ans += a[i];
			}
			if (!(a[i] & 1))
			{
				ans += a[i];
			}
		}
	}
	cout << ans << endl;
	return 0;
}

#17WA

2021/6/10 18:30
加载中...