fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define pb push_back
  4. #define REP(i, a, b) for (int i = a; i <= b; i++)
  5. #define BACK(i, a, b) for (int i = a; i >= b; i--)
  6. #define MOD 1000000007
  7. #define PI 4 * atan(1)
  8. #define sz(A) (int)A.size()
  9. typedef long long ll;
  10. typedef vector<int> vi;
  11. typedef pair<int, int> pii;
  12. typedef vector<long long> vll;
  13. typedef long int int32;
  14. typedef unsigned long int uint32;
  15. typedef long long int int64;
  16. typedef unsigned long long int uint64;
  17. int n,k;
  18. set<string> s;
  19. vector<string> use;
  20. vector<string> res;
  21. void result(){
  22. for(int i=1; i<res.size(); i++){
  23. cout << res[i] << " ";
  24. }
  25. cout << "\n";
  26. }
  27. void backtrack(int i){
  28. for(string x: use){
  29. if(x > res[i-1]){
  30. res.push_back(x);
  31. if(i == k){
  32. result();
  33. }else{
  34. backtrack(i+1);
  35. }
  36. res.pop_back();
  37. }
  38. }
  39. }
  40. void solve(int test){
  41. cin >> n >> k;
  42. string temp;
  43. for(int i=0; i <n; i++){
  44. cin >> temp;
  45. s.insert(temp);
  46. }
  47. for(string x: s){
  48. use.pb(x);
  49. }
  50. res.push_back("@");
  51. backtrack(1);
  52. }
  53. int main(){
  54. ios_base::sync_with_stdio(false);
  55. cin.tie(NULL);
  56. cout.tie(NULL);
  57. int typetest = 0;
  58. if (typetest){
  59. int t;
  60. cin >> t;
  61. cin.ignore();
  62. REP(i, 1, t){
  63. solve(i);
  64. }
  65. }
  66. else solve(0);
  67. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
Standard output is empty