Cod sursa(job #2680563)

Utilizator rares404AlShaytan - Balasescu Rares rares404 Data 3 decembrie 2020 18:46:45
Problema Submultimi Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.56 kb
//
//  main.cpp
//  submultimi
//
//  Created by Eusebiu Rares on 03.12.2020.
//

#include <iostream>
#include <fstream>

class OutoutParsing {
public:
	OutoutParsing() {} ;
	
	OutoutParsing(const char * file_name) {
		output_file.open(file_name, std::ios::out | std::ios::binary) ;
		output_file.sync_with_stdio(false) ;
		index = 0 ;
	}
	
	inline OutoutParsing & operator << (int target) {
		aux = 0 ;
		n = target ;
		target < 0 ? sign = -1 : sign = 1 ;
		if (!n) {
			nr[aux ++] = '0' ;
		}
		for ( ; n ; n /= 10) {
			nr[aux ++] = sign * (n % 10) + '0' ;
		}
		if (sign == -1) {
			buffer[index] = '-' ;
			inc() ;
		}
		for ( ; aux ; inc())
		buffer[index] = nr[-- aux] ;
		return *this ;
	}
	
	inline OutoutParsing & operator << (const char * target) {
		aux = 0 ;
		while (target[aux]) {
			buffer[index] = target[aux ++] ;
			inc() ;
		}
		return *this ;
	}
	~OutoutParsing() {
		output_file.write(buffer, index) ;
		output_file.close() ;
	}
	
private:
	std::fstream output_file;
	static const int SIZE = 0x200000;
	int index = 0, aux, n, sign;
	char buffer[SIZE], nr[24];
	
	inline void inc() {
		if (++index == SIZE) {
			index = 0 ;
			output_file.write(buffer, SIZE);
		}
	}
} ;

std::fstream in ("submultimi.in", std::ios::in) ;
OutoutParsing out ("submultimi.out") ;

int n ;
int sol[20] ;

void bkt(int p, int last) {
	if (p > 0) {
		for (int i = 1 ; i <= p ; ++ i) {
			out << sol[i] << " " ;
		}
		out << "\n" ;
	}
	for (int i = last + 1 ; i <= n ; ++ i) {
		sol[p + 1] = i ;
		bkt(p + 1, i) ;
	}
}

int main(int argc, const char * argv[]) {
	in >> n ;
	sol[1] = 1 ;
	bkt(0, 0) ;
}