155072025-02-20 09:31:03markfsibianKombináció (50)cpp17Partially correct 45/501ms508 KiB
#include <iostream>
#include <vector>

using namespace std;

vector<int> vonj(vector<int> v, int ind, int base)
{
	if (ind > 0)
	{
		v[ind] = v[ind] - 1;
		if (v[ind] == v[ind - 1])
		{
			v[ind] = base;
			return vonj(v, ind - 1, base - 1);
		}
		return v;
	}
	v[ind] = v[ind] - 1;
	return v;
}

 vector<int> adj(vector<int> v, int ind, int base)
{
	 if (ind > 0)
	 {
		 if (v[ind] == base)
		 {
			 return adj(v, ind - 1, base - 1);
		 }
		 else
		 {
			 v[ind] = v[ind] + 1;
			 return v;
		 }
	 }
	 return v;
}

void pr(vector<int> v)
{
	for (auto& e : v)
		cout << e << " ";
}

void prel(int n)
{
	for (int i = 1; i <= n; ++i)
		cout << i << " ";
}

void prut(int base, int n)
{
	for (int i = 1; i <= n; ++i)
		cout << base - n + i << " ";
}

int main()
{
	int base, n;
	cin >> base >> n;
	vector<int> v;
	int t, el=0;
	for (int i = 1; i <= n; ++i)
	{
		cin >> t;
		if (t == i)
			el++;
		v.push_back(t);
	}
	if (el == n)
		prut(base, n);
	else
		pr(vonj(v, n - 1, base));
	cout << endl;
	if (v[0] == base - n + 1)
		prel(n);
	else
		pr(adj(v, n - 1, base));
}
SubtaskSumTestVerdictTimeMemory
base45/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/21ms316 KiB
4Partially correct1/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms384 KiB
9Accepted2/21ms332 KiB
10Accepted4/41ms316 KiB
11Partially correct2/41ms316 KiB
12Accepted4/41ms316 KiB
13Partially correct2/41ms316 KiB
14Accepted4/41ms316 KiB
15Accepted4/41ms316 KiB
16Accepted6/61ms508 KiB
17Accepted6/61ms316 KiB