SHARE
TWEET

Untitled

a guest Mar 25th, 2019 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <fstream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <unordered_set>
  5.  
  6. using namespace std;
  7.  
  8. class Task {
  9.  public:
  10.     void solve() {
  11.         read_input();
  12.         print_output(get_result());
  13.     }
  14.  
  15.  private:
  16.     int n, k;
  17.  
  18.     void read_input() {
  19.         ifstream fin("in");
  20.         fin >> n >> k;
  21.         fin.close();
  22.     }
  23.  
  24.     vector<vector<int> > get_result() {
  25.         vector<vector<int> > all;
  26.         vector<int> solution(k);
  27.         vector<int> domain(n + 1);
  28.         unordered_set<int> visited;
  29.  
  30.         for (int i = 0; i <= n; i++) {
  31.             domain[i] = i;
  32.         }
  33.  
  34.         back(0, k, all, solution, domain, visited);
  35.  
  36.         return all;
  37.     }
  38.  
  39.     void back(int step, int stop, vector<vector <int> >& all, vector<int>& sol,
  40.               vector<int>& domain, unordered_set<int>& visited) {
  41.  
  42.         if (step == stop) {
  43.             all.emplace_back(sol);
  44.             return;
  45.         }
  46.  
  47.         for (int i = 1; i <= n; i++) {
  48.             if (visited.find(domain[i]) == visited.end()) {
  49.                 sol[step] = domain[i];
  50.                 visited.insert(domain[i]);
  51.  
  52.                 back(step + 1, stop, all, sol, domain, visited);
  53.  
  54.                 visited.erase(domain[i]);
  55.             }
  56.         }
  57.     }
  58.  
  59.     void print_output(vector<vector<int> > result) {
  60.         ofstream fout("out");
  61.         fout << result.size() << '\n';
  62.         for (int i = 0; i < (int)result.size(); i++) {
  63.             for (int j = 0; j < (int)result[i].size(); j++) {
  64.                 fout << result[i][j] <<
  65.                     (j + 1 != result[i].size() ? ' ' : '\n');
  66.             }
  67.         }
  68.         fout.close();
  69.     }
  70. };
  71.  
  72. int main() {
  73.     Task task;
  74.     task.solve();
  75.     return 0;
  76. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top