Cod sursa(job #2397754)

Utilizator miguelMihail Lavric miguel Data 4 aprilie 2019 19:05:36
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#pragma GCC optimize("O3")
#include<bits/stdc++.h>
using namespace std;
#define rc(x) return cout<<x<<endl,0
#define pb push_back
#define dbg(x) cout << #x << '=' << x << '\n';
#define ll long long
#define sz size()
#define x first
#define y second
#define pi pair <int, int>
#define pii pair <pi, pi>
#define vi vector <ll>
#define in insert
#define er erase
#define fd find
#define int ll
int n, c[19][19], k;
vector <int> v;

int32_t main(){
	ios_base::sync_with_stdio(0);cin.tie(0);cerr.tie(0);cout.tie(0);
	for(int i=0; i<=18; i++){
        for(int j=0; j<=i; j++){
            if(j==0) c[i][j]=1;
            else c[i][j]=c[i-1][j-1]+c[i-1][j];
        }
	}
	ifstream cin("combinari.in");
    ofstream cout("combinari.out");
    cin>>n>>k;
    for(int i=1; i<=k; i++) v.pb(0LL);
    for(int i=1; i<=n-k; i++) v.pb(1LL);
    for(int i=1; i<=c[n][k]; i++){
        for(int j=0; j<n; j++) if(v[j]==0) cout<<j+1<<" ";
        cout<<'\n';
        next_permutation(v.begin(), v.end());
    }
}