153552025-02-19 08:49:17MrkzKombináció (50)cpp17Hibás válasz 41/501ms532 KiB
/*#include <iostream>

using namespace std;
int N,M,megoldas[100],St[100],elozo[100];
bool vanMegoldas(int szint){
    return (szint==M);
}
bool megoldas3(){
    for(int i=1;i<=M;i++)
        if(elozo[i]!=0)
            return false;
    return true;
}
bool megoldas1(){
    for(int i=1;i<=M;i++)
        if(St[i]!=megoldas[i])
        return false;
    return true;
}
bool megoldas2(){
    for(int i=1;i<=M;i++)
        if(megoldas[i]!=elozo[i])
            return false;
    return true;
}
bool Jo(int szint){

    for(int i=1;i<szint;i++){
        if(St[szint]<=St[i])
            return false;
    }
    return true;
}
void Mutat(){
    for(int i=1;i<=M;i++)
        cout<<St[i]<<" ";
    cout<<endl;
}
void Back(int szint){
    if(vanMegoldas(szint-1)){
        if(megoldas1()){
            for(int i=1;i<=M;i++)
                cout<<elozo[i]<<" ";
            cout<<endl;
        }
        if(megoldas2()){
            Mutat();
            cout<<endl;
        }
        if(megoldas3()){
            int S=M,S2=N;
            while(S!=0){
                cout<<S2<<" ";
                S--;
                S2--;
            }
            cout<<endl;
        }
        for(int i=1;i<=M;i++)
            elozo[i]=St[i];
    }
    else for(int i=1;i<=N;i++){
        St[szint]=i;
        if(Jo(szint))
            Back(szint+1);
    }
}
int main()
{
    cin>>N>>M;
    for(int i=1;i<=M;i++)
        cin>>megoldas[i];
    Back(1);
    return 0;
}*/
#include <iostream>

using namespace std;
int N,M,megoldas[100],vissza,vissza2;
int main()
{
    cin>>N>>M;
    bool b;
    for(int i=1;i<=M;i++)
        cin>>megoldas[i];
    b=true;
    if(megoldas[M]==M){
        for(int i=N-M+1;i<=N;i++)
            cout<<i<<" ";
        b=false;
    }

    for(int i=M;i>=1 && b==true;i--){
        if(megoldas[i]-1>megoldas[i-1]){
            vissza=i;
            vissza2=megoldas[i];
            megoldas[i]--;
        for(int j=1;j<=M;j++)
            cout<<megoldas[j]<<" ";
            megoldas[vissza]=vissza2;
            b=false;
        }
    }
    b=true;
    if(megoldas[1]==N-M+1){
            cout<<endl;
        for(int i=1;i<=M;i++)
            cout<<i<<" ";
            b=false;
    }

    for(int i=M;i>=1 && b==true; i--){
        if(megoldas[i]+1<=N && megoldas[i]+1>megoldas[i-1]){
            megoldas[i]++;
            cout<<endl;
            b=false;
            for(int j=1;j<=M;j++)
                cout<<megoldas[j]<<" ";
        }
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base41/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/01ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms328 KiB
6Elfogadva2/21ms532 KiB
7Részben helyes1/21ms392 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva4/41ms316 KiB
11Részben helyes2/41ms316 KiB
12Elfogadva4/41ms316 KiB
13Elfogadva4/41ms316 KiB
14Elfogadva4/41ms508 KiB
15Elfogadva4/41ms316 KiB
16Részben helyes3/61ms316 KiB
17Részben helyes3/61ms316 KiB