146092025-01-20 15:50:22zsombKombináció (50)cpp17Accepted 50/501ms508 KiB
#include <bits/stdc++.h>
using namespace std;

void kovi(vector<int> *vec, int curr, int k)
{
    if (k - ((*vec).size() - curr - 1) == (*vec)[curr])
    {
        kovi(vec, curr - 1, k);
        (*vec)[curr] = (*vec)[curr - 1] + 1;
    }
    else
    {
        (*vec)[curr]++;
    }
}

void vissza(vector<int> *vec, int curr, int k)
{
    if ((*vec)[curr - 1] + 1 == (*vec)[curr])
    {
        vissza(vec, curr - 1, k);
        (*vec)[curr] = k - ((*vec).size() - curr - 1);
    }
    else
    {
        (*vec)[curr]--;
    }
}

int main()
{
    int k, n;
    cin >> k >> n;

    vector<int> vec(n);

    for (int i = 0; i < n; i++)
    {
        cin >> vec[i];
    }

    vector<int> vec2 = vec;

    if (vec[vec.size() - 1] != vec.size())
    {
        vissza(&vec, vec.size() - 1, k);
        for (int i = 0; i < n; i++)
        {
            cout << vec[i] << " ";
        }
        cout << endl;
    }
    else
    {
        for (int i = 0; i < n; i++)
        {
            cout << (k - vec.size()) + i + 1 << " ";
        }
        cout << endl;
    }

    if (vec2[0] != k - n + 1)
    {
        kovi(&vec2, vec.size() - 1, k);
        for (int i = 0; i < n; i++)
        {
            cout << vec2[i] << " ";
        }
    }
    else
    {
        for (int i = 0; i < n; i++)
        {
            cout << i + 1 << " ";
        }
    }
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/21ms508 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms348 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted4/41ms316 KiB
11Accepted4/41ms508 KiB
12Accepted4/41ms316 KiB
13Accepted4/41ms316 KiB
14Accepted4/41ms316 KiB
15Accepted4/41ms316 KiB
16Accepted6/61ms316 KiB
17Accepted6/61ms316 KiB