fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. bool check(int c, vector<int>&a,vector<int>&b){
  5. int n = a.size();
  6. int m = b.size();
  7.  
  8. if(m*c < n)return false;
  9.  
  10. for(int i = 0 ;i < n ;i++){
  11. int d = i/c;
  12. int j = d;
  13. if(a[i]>b[j]){
  14. return false;
  15. }
  16. }
  17. return true;
  18. }
  19.  
  20. int func(vector<int>&a, vector<int>&b){
  21. int n = a.size();
  22. int m = b.size();
  23.  
  24. int l = 1;
  25. int h = n;
  26. int r = 0;
  27.  
  28. sort(a.rbegin(),a.rend());
  29. sort(b.rbegin(),b.rend());
  30.  
  31. if(a[0]<=b[0]){
  32. while(l<=h){
  33. int m = l + (h-l)/2;
  34. if(check(m,a,b)){
  35. r = m;
  36. h = m-1;
  37. }else{
  38. l = m+1;
  39. }
  40. }
  41. return 2*r-1;
  42.  
  43. }
  44. return -1;
  45.  
  46. }
  47. int main() {
  48. vector<int>a = {1,2,3,4,5};
  49. vector<int>b = {7,4,6,1,2 };
  50.  
  51. cout<<func(a,b);
  52. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
1