fork(1) download
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int przyklad = -1;
  6.  
  7. int bin_search(int l,int p,int wyn,int *tab){
  8. if(l<=p){
  9. int sr = (l+p)/2;
  10. if(tab[sr] == wyn) return sr;
  11. if(tab[sr]<=wyn){
  12. przyklad = sr;
  13. return bin_search(sr+1,p,wyn,tab);
  14. }
  15. if(tab[sr]>wyn) return bin_search(l,sr-1,wyn,tab);
  16. }
  17.  
  18. return przyklad;
  19.  
  20. }
  21.  
  22. void fun (){
  23. int n,w,wynik=0,pom=0;
  24. cin>>n>>w;
  25. int *tab = new int[n];
  26. for(int i=0;i<n;i++)
  27. cin>>tab[i];
  28.  
  29. przyklad = -1;
  30.  
  31. for(int i=0;i<n;i++){
  32. if(tab[i]!=0){
  33. pom = tab[i];
  34. tab[i] = 0;
  35. sort(tab,tab+n);
  36. if(bin_search(i+1,n-1,w-pom,tab)!= -1){
  37. tab[bin_search(i+1,n-1,w-pom,tab)] = 0;
  38.  
  39. }
  40. wynik++;
  41. }
  42.  
  43. }
  44. cout<<wynik<<endl;
  45.  
  46. }
  47.  
  48. int main()
  49. {
  50. std::ios::sync_with_stdio(false);
  51. int n;
  52. cin>>n;
  53. while(n--){
  54. fun();
  55. }
  56. return 0;
  57. }
  58.  
Success #stdin #stdout 0s 15240KB
stdin
2
7 20
4 10 18 6 16 20 13
14 20
4 10 18 6 16 20 13 4 10 18 6 16 20 13
stdout
5
9