fork(1) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. bool czy_wszystkie(int tab[],int n)
  6. {
  7. for (int i = 0; i < n;i++)
  8. {
  9. if (tab[i] != 0)
  10. {
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16.  
  17. int najwieksz(int tab[], int n)
  18. {
  19. int naj{0};
  20. int xd{0};
  21. for (int i = 0; i < n;i++)
  22. {
  23. if ((tab[i] > naj)&&(tab[i] != 0))
  24. {
  25. naj = tab[i];
  26. xd = i;
  27. }
  28. }
  29. return xd;
  30. }
  31.  
  32. int najmniejsza(int tab[], int n)
  33. {
  34. int naj{1001};
  35. int xd{0};
  36. for (int i = 0; i < n;i++)
  37. {
  38. if ((tab[i] < naj)&&(tab[i] != 0))
  39. {
  40. naj = tab[i];
  41. xd = i;
  42. }
  43. }
  44. return xd;
  45. }
  46.  
  47. int main()
  48. {
  49. int t;
  50. cin >> t;
  51. for (int i = 0; i < t; i++)
  52. {
  53. int n,k;
  54. cin >> n >> k;
  55. int tab[n];
  56. for (int j = 0; j < n; j++)
  57. {
  58. cin >> tab[j];
  59. }
  60. int pudla{0};
  61. for (int j = 0; j < n; j++)
  62. {
  63. if (tab[najwieksz(tab,n)] + tab[najmniejsza(tab,n)] <= k)
  64. {
  65. tab[najwieksz(tab,n)] = 0;
  66. tab[najmniejsza(tab,n)] = 0;
  67.  
  68. pudla++;
  69. }
  70. else
  71. {
  72. tab[najwieksz(tab,n)] = 0;
  73. pudla++;
  74. }
  75.  
  76. if (czy_wszystkie(tab,n))
  77. {
  78. cout << pudla << endl;
  79. break;
  80. }
  81. }
  82. }
  83. return 0;
  84. }
Success #stdin #stdout 0s 4244KB
stdin
1
7 20
4 10 18 6 16 20 13
stdout
5