Cod sursa(job #3355253)

Utilizator alexanca_Alexandru anca alexanca_ Data 22 mai 2026 11:23:40
Problema Submultimi Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 2.17 kb
import java.io.*;
import java.util.StringTokenizer;

public class Main {
    static int[] sol;
    static int n;
//    static int k;

    // Declarăm PrintWriter global pentru a-l putea accesa din funcția back
    static PrintWriter out;

    public static void main(String args[]) throws Exception {
        // Inițializăm citirea din și scrierea în fișiere
        MyScanner s = new MyScanner("combinari.in");
        out = new PrintWriter(new BufferedWriter(new FileWriter("combinari.out")));

        n = s.nextInt();
//        k = s.nextInt();
        sol = new int[n + 1];

//        for (int k = 1; k <= n; k++) {
//            back(1,k);
//        }
        back(1);

        // FOARTE IMPORTANT: Trebuie să închidem fișierul la final pentru a salva datele scrise!
        out.close();
    }

    static void back(int pas) {
        if (pas > 1) {
            for (int j = 1; j < pas; j++) {
                out.print(sol[j] + " ");
            }
            out.println();
        }

        // Generăm permutările
        for (int i = sol[pas - 1] + 1; i <= n; i++) {
            sol[pas] = i;
            back(pas + 1);
        }
    }
}

// Clasa MyScanner adaptată pentru a citi din fișier în loc de System.in
class MyScanner {
    BufferedReader br;
    StringTokenizer st;

    public MyScanner(String fileName) throws FileNotFoundException {
        br = new BufferedReader(new FileReader(fileName));
    }

    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                String line = br.readLine();
                if (line == null) return null;
                st = new StringTokenizer(line);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(next());
    }

    long nextLong() {
        return Long.parseLong(next());
    }

    double nextDouble() {
        return Double.parseDouble(next());
    }

    String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}