20522022-12-15 22:44:25kovacs.peter.18fKombináció (50)cpp11Elfogadva 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';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1824 KiB
2Elfogadva0/02ms2064 KiB
3Elfogadva2/22ms2416 KiB
4Elfogadva2/22ms2664 KiB
5Elfogadva2/22ms2664 KiB
6Elfogadva2/22ms2872 KiB
7Elfogadva2/22ms2952 KiB
8Elfogadva2/22ms3072 KiB
9Elfogadva2/22ms3280 KiB
10Elfogadva4/42ms3480 KiB
11Elfogadva4/42ms3616 KiB
12Elfogadva4/42ms3820 KiB
13Elfogadva4/42ms3820 KiB
14Elfogadva4/42ms3820 KiB
15Elfogadva4/42ms3952 KiB
16Elfogadva6/62ms4152 KiB
17Elfogadva6/62ms4384 KiB