176042025-08-09 14:11:17BucsMateKombináció (50)cpp17Accepted 50/501ms544 KiB
#include <iostream>
#include <vector>

using namespace std;

void elozoKombinacio(vector<int> kombinacio, int N, int M)
{
    int index = M;
    while(kombinacio[index] == kombinacio[index-1] + 1 && index > 1){
        index--;
    }
    if(index == 1){
        if(kombinacio[1] == 1){
            for(int i = N - M + 1; i <= N; ++i){
                cout << i << " ";
            }
            cout << endl;
            return;
        }
    }

    kombinacio[index]--;
    for(int i = index+1; i <= M; i++){
        kombinacio[i] = N - M + i;
    }

    for(int i = 1; i <= M; i++){
        cout << kombinacio[i] << " ";
    }
    cout << endl;
}

void kovetkezoKombinacio(vector<int> kombinacio, int N, int M)
{
    int index = M;
    while(kombinacio[index] == N - M + index && index > 0){
        index--;
    }
    if(index == 0){
        for(int i = 1; i <= M; ++i){
            cout << i << " ";
        }
        cout << endl;
        return;
    }

    kombinacio[index]++;
    for(int i = index+1; i <= M; i++){
        kombinacio[i] = kombinacio[i-1] + 1;
    }

    for(int i = 1; i <= M; i++){
        cout << kombinacio[i] << " ";
    }
    cout << endl;
}

int main()
{
    int N, M;
    cin >> N >> M;
    vector<int> kombinacio(N+1, 0);
    for(int i = 1; i <= M; ++i){
        cin >> kombinacio[i];
    }
    elozoKombinacio(kombinacio, N, M);
    kovetkezoKombinacio(kombinacio, N, M);

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms544 KiB
9Accepted2/21ms400 KiB
10Accepted4/41ms316 KiB
11Accepted4/41ms508 KiB
12Accepted4/41ms316 KiB
13Accepted4/41ms316 KiB
14Accepted4/41ms508 KiB
15Accepted4/41ms316 KiB
16Accepted6/61ms500 KiB
17Accepted6/61ms316 KiB