146092025-01-20 15:50:22zsombKombináció (50)cpp17Elfogadva 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 << " ";
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/21ms508 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms348 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva4/41ms316 KiB
11Elfogadva4/41ms508 KiB
12Elfogadva4/41ms316 KiB
13Elfogadva4/41ms316 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva4/41ms316 KiB
16Elfogadva6/61ms316 KiB
17Elfogadva6/61ms316 KiB