20522022-12-15 22:44:25kovacs.peter.18fKombináció (50)cpp11Accepted 50/503ms4384 KiB
#include <iostream>
#include <vector>

using namespace std;

int main() {
    cin.sync_with_stdio(false);
    cin.tie(nullptr);

    int N, M;
    cin >> N >> M;
    vector<int> chairS(M);
    for (auto &e : chairS) {
        cin >> e;
    }
    int index;
    if (chairS[M - 1] == M) {
        index = -1;
    }
    else {
        // előző: csökkentjük a legutolsót, amit nem előz meg nála eggyel kisebb szám; a továbbiak a lehetséges értékek legvége lesznek
        index = M - 1;
        while (index > 0 && chairS[index] == chairS[index - 1] + 1) {
            --index;
        }
        for (int i = 0; i < index; i++) {
            cout << chairS[i] << " ";
        }
        cout << chairS[index] - 1 << " ";
    }
    for (int i = index + 1; i < M; i++) {
        cout << N - (M - 1 - i) << " ";
    }
    cout << '\n';
    if (chairS[0] == N - (M - 1)) {
        index = 0;
        chairS[0] = 1;
        cout << 1 << " ";
    }
    else {
        // következő: növeljük a legutolsót, amit még növelhetünk; a továbbiak közvetlenül utána következnek
        index = M - 1;
        while (index > 0 && chairS[index] == N - (M - 1) + index) {
            --index;
        }
        for (int i = 0; i < index; i++) {
            cout << chairS[i] << " ";
        }
        cout << ++chairS[index] << " ";
    }
    for (int i = index + 1; i < M; i++) {
        chairS[i] = chairS[i - 1] + 1;
        cout << chairS[i] << " ";
    }
    cout << '\n';
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms1824 KiB
2Accepted0/02ms2064 KiB
3Accepted2/22ms2416 KiB
4Accepted2/22ms2664 KiB
5Accepted2/22ms2664 KiB
6Accepted2/22ms2872 KiB
7Accepted2/22ms2952 KiB
8Accepted2/22ms3072 KiB
9Accepted2/22ms3280 KiB
10Accepted4/42ms3480 KiB
11Accepted4/42ms3616 KiB
12Accepted4/42ms3820 KiB
13Accepted4/42ms3820 KiB
14Accepted4/42ms3820 KiB
15Accepted4/42ms3952 KiB
16Accepted6/62ms4152 KiB
17Accepted6/62ms4384 KiB