109642024-04-22 15:32:48VargusKombináció (50)cpp17Hibás válasz 35/503ms4016 KiB
#include <iostream>
#include <queue>
#define ll long long

using namespace std;

vector <ll> x, y, z;
ll n, k;

bool jo(ll lep)
{
    if (y[lep - 1] <= y[lep] && y[lep] >= x[lep])
        return true;
    return false;
}

int main()
{
    cin >> n >> k;
    x.resize(k + 1);
    y.resize(k + 1);
    z.resize(k + 1);
    for (ll i = 1; i <= k; ++i)
    {
        cin >> x[i];
        y[i] = x[i];
        z[i] = x[i];
    }
    ll n1 = n, db = 0;
    for (ll i = k; i >= 1; --i)
    {
        if (y[i] == n1)
        {
            ++db;
            --n1;
        }
        else
        {
            ++y[i];
            for (ll j = i + 1; j <= k; ++j)
            {
                for (ll g = 1; g <= n; ++g)
                {
                    y[j] = g;
                    if (jo(j))
                        break;
                }
            }
            break;
        }
    }

    bool ok = false;
    for (ll i = 1; i <= k; ++i)
    {
        n1 = n - k + i;
        if (z[i] == n1)
        {
            z[i]--;
            ok = true;
            break;
        }
    }
    if (!ok)
    {
        z[1]--;
        for (ll i = 2; i <= k; ++i)
            z[i]++;
    }

    for (ll i = 1; i <= k; ++i)
        cout << z[i] << " ";

    cout << "\n";
    for (ll i = 1; i <= k; ++i)
        cout << y[i] << " ";

    return 0;
}
/*
6 4
1 2 4 6
*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base35/50
1Elfogadva0/03ms1752 KiB
2Hibás válasz0/03ms2000 KiB
3Részben helyes1/23ms2076 KiB
4Elfogadva2/23ms2372 KiB
5Részben helyes1/23ms2420 KiB
6Részben helyes1/23ms2516 KiB
7Részben helyes1/23ms2572 KiB
8Részben helyes1/23ms2784 KiB
9Részben helyes1/23ms3148 KiB
10Részben helyes2/43ms3268 KiB
11Elfogadva4/43ms3356 KiB
12Elfogadva4/43ms3476 KiB
13Elfogadva4/43ms3552 KiB
14Részben helyes2/43ms3688 KiB
15Részben helyes2/43ms3772 KiB
16Elfogadva6/63ms3904 KiB
17Részben helyes3/63ms4016 KiB