176032025-08-09 14:08:02BucsMateKombináció (50)cpp17Részben helyes 43/501ms564 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 > 1){
        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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base43/50
1Elfogadva0/01ms500 KiB
2Elfogadva0/01ms316 KiB
3Részben helyes1/21ms316 KiB
4Elfogadva2/21ms404 KiB
5Elfogadva2/21ms316 KiB
6Részben helyes1/21ms508 KiB
7Elfogadva2/21ms564 KiB
8Részben helyes1/21ms316 KiB
9Elfogadva2/21ms404 KiB
10Részben helyes2/41ms316 KiB
11Elfogadva4/41ms316 KiB
12Elfogadva4/41ms512 KiB
13Elfogadva4/41ms316 KiB
14Részben helyes2/41ms316 KiB
15Elfogadva4/41ms500 KiB
16Elfogadva6/61ms508 KiB
17Elfogadva6/61ms316 KiB