WA on #24 玄关求条
查看原帖
WA on #24 玄关求条
1059747
longlong_int楼主2024/10/3 11:10
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;

const int N = 1e5 + 10;
int arr[N];
vector<int> odd, even;

signed main()
{
	int n, k, p;
	cin >> n >> k >> p;
	int sum = 0;
	for (int i = 1; i <= n; i++)
	{
		cin >> arr[i];
		sum += arr[i];
		if (arr[i] & 1) odd.push_back(arr[i]);
		else even.push_back(arr[i]);
	}
	string s;
	if (((k - p) & 1) ^ (sum & 1))
	{
		cout << "NO\n";
		return 0;
	}
	else s += "YES\n";
	
	for (int i = 1; i <= p; i++) // p 个数是偶数
	{
		if (even.empty())
		{
			if (odd.empty())
			{
				cout << "NO" << endl;
				return 0;
			}
			int a = odd.back();
			odd.pop_back();
			if (odd.empty())
			{
				cout << "NO" << endl;
				return 0;
			}
			int b = odd.back();
			odd.pop_back();
			s += "2 " + to_string(a) + " " + to_string(b) + endl;
		}
		else
		{
			s += "1 " + to_string(even.back()) + endl;
			even.pop_back();
		}
	}
	
	if (k != p)
	{
		for (int i = 1; i <= (k - p - 1); i++)
		{
			if (odd.empty())
			{
				cout << "NO" << endl;
				return 0;
			}
			s += "1 " + to_string(odd.back()) + endl;
			odd.pop_back();
		}
		
		if ((odd.size() + even.size()))
		{
			s += to_string(odd.size() + even.size()) + " ";
			for (int i: odd)
			{
				s += to_string(i) + " ";
			}
			for (int i: even)
			{
				s += to_string(i) + " ";
			}
		}
	}
	cout << s;
	return 0;
}

CF RID 284108299

不知道为啥#24少了一组数
应该是被吞了

2024/10/3 11:10
加载中...