Submission details
Task:Kolmijako
Sender:pupukani
Submission time:2025-09-05 19:36:49 +0300
Language:C++ (C++17)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#1--1, 2, 3details
#2--2, 3details
#3--3details

Code

#include <iostream>
#include <vector>
#include <numeric>
#include <sstream>

int summa(std::vector<int> v)
{
	int summa = 0;
	for (int i : v)
		summa += i;
	return summa;
}

std::stringstream ss;

bool solve(std::vector<int> num, size_t i, int k, std::vector<std::vector<int>> kasat)
{
	if (i == num.size()) // num is "empty"
	{
		if (summa(kasat[0]) == summa(kasat[1]) && summa(kasat[1]) == summa(kasat[2]))
		{
			ss << "YES" << std::endl;
			for (int j = 0; j < 3; ++j)
			{
				ss << kasat[j].size() << std::endl;
				for (int luku : kasat[j])
					ss << luku << " ";
				ss << std::endl;
			}
			return true;
		}
		return false;
	}

	kasat[k].push_back(num[i]);
	bool tulos =
		solve(num, i + 1, 0, kasat) ||
		solve(num, i + 1, 1, kasat) ||
		solve(num, i + 1, 2, kasat);
	if (tulos == true)
		return true;
	return false;
}

int main(void)
{
	int t;
	std::cin >> t;
	for (int i = 0; i < t; ++i)
	{
		int n;
		std::cin >> n;
		std::vector<int> num(n);
		std::iota(num.begin(), num.end(),1);

		std::vector<std::vector<int>> kasat(3);
		if (!solve(num, 0, 0, kasat) && !solve(num, 0, 1, kasat) && !solve(num, 0, 2, kasat))
			ss << "NO" << std::endl;
	}
	std::cout << ss.str();
}

Test details

Test 1

Group: 1, 2, 3

Verdict:

input
15
1
2
3
4
...

correct output
NO
NO
NO
NO
YES
...

user output
(empty)

Test 2

Group: 2, 3

Verdict:

input
100
1
2
3
4
...

correct output
NO
NO
NO
NO
YES
...

user output
(empty)

Test 3

Group: 3

Verdict:

input
100
564
895
546
980
...

correct output
YES
188
1 6 12 7 18 13 24 19 30 25 36 ...

user output
(empty)