Cod sursa(job #1754496)

Utilizator bogdanluncasubogdan bogdanluncasu Data 8 septembrie 2016 13:21:02
Problema Combinari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<iostream>
using namespace std;
int *a,n,m;
void show(){
    for(int i=0;i<m;i++){
      printf("%d ",a[i]);
	}
    printf("\n");
}

void swap(int i,int j){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
bool valid(int x){
	if(x<1)return true;
	if(a[x-1]>a[x])return false;
	valid(x-1);
}
bool solve(int l,int r){
    if(l==r){if(valid(m-1))show();return true;}
    for(int i=l;i<n;i++){
	    swap(l,i);
	    solve(l+1,r);
	    swap(l,i);
    }
}
int main(){
	freopen("permutari.in", "r", stdin);
	freopen("permutari.out", "w", stdout);
    scanf("%d %d",&n,&m);
    a=(int*)malloc(sizeof(int*)*100000);
    for(int i=0;i<n;i++){
        a[i]=i+1;
    }
    solve(0,n-1);
}