Advertisement
a53

turn_1

a53
Nov 9th, 2021
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin("turn_1.in");
  4. ofstream fout("turn_1.out");
  5. struct cub
  6. {
  7. int l;
  8. char cul[25];
  9. };
  10. cub v[20];
  11. int n, H, st[20], ap[20], sum[20];
  12.  
  13. void afisare(int k)
  14. {
  15. for(int i=1;i<=k;i++)
  16. fout<<st[i]<<" ";
  17. fout<<'\n';
  18. }
  19.  
  20. int valid (int k)
  21. {
  22.  
  23. if(k>1 && v[st[k]].l>v[st[k-1]].l)
  24. return 0;
  25. if(strcmp(v[st[k]].cul, v[st[k-1]].cul)==0)
  26. return 0;
  27. if(sum[k-1]+v[st[k]].l<=H)
  28. {
  29. sum[k]=sum[k-1]+v[st[k]].l;
  30. return 1;
  31. }
  32. return 0;
  33. }
  34.  
  35. int valid_sol(int k)
  36. {
  37. if(sum[k]==H)
  38. return 1;
  39. return 0;
  40. }
  41.  
  42. void back (int k)
  43. {
  44. for(int i=1; i<=n; i++)
  45. {
  46. if(ap[i]==0)
  47. {
  48. ap[i]=1;
  49. st[k]=i;
  50. if(valid(k))
  51. if(valid_sol(k))
  52. afisare(k);
  53. else
  54. back(k+1);
  55. ap[i]=0;
  56. }
  57. }
  58. }
  59.  
  60. int main()
  61. {
  62. fin>>n>>H;
  63. for(int i=1;i<=n;i++)
  64. fin>>v[i].l>>v[i].cul;
  65. back(1);
  66. return 0;
  67. }
  68. /**
  69. SO
  70. #include <fstream>
  71. #include <cstring>
  72. using namespace std;
  73. ifstream fin("turn_1.in");
  74. ofstream fout("turn_1.out");
  75.  
  76. struct cub { int l; char c[22];};
  77. int H,n,X[20],P[20];
  78. cub A[20];
  79.  
  80. void afisare(int k)
  81. {
  82. for(int i=1;i<=k;i++)
  83. fout<<X[i]<<" ";
  84. fout<<"\n";
  85. }
  86.  
  87. void back(int k, int s)
  88. {
  89. for(int i=1;i<=n;i++)
  90. if(!P[i])
  91. {
  92. X[k]=i;
  93. P[i]=1;
  94. s=s+A[X[k]].l;
  95. if(k==1 || (strcmp(A[X[k]].c,A[X[k-1]].c)!=0 && A[X[k]].l<=A[X[k-1]].l && s<=H))
  96. {
  97. if(s==H) afisare(k);
  98. else back(k+1,s);
  99. }
  100. s=s-A[X[k]].l;
  101. P[i]=0;
  102. }
  103. }
  104.  
  105. int main()
  106. {
  107. fin>>n>>H;
  108. for(int i=1;i<=n;i++)
  109. fin>>A[i].l>>A[i].c;
  110. back(1,0);
  111. return 0;
  112. }
  113. */
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement