fork download
  1. #include <bits/stdc++.h>
  2. using namespace std ;
  3. #define fast ios_base::sync_with_stdio(0);cin.tie(0);
  4. #define endl "\n"
  5. #define int long long
  6. #define ll long long
  7. #define str string
  8.  
  9. ll FP(ll base , ll p ){
  10. if (p == 1) {
  11. return base ;
  12. }
  13. ll ans = FP(base , p/2) ;
  14. if (p % 2 == 0){
  15. return ans * ans ;
  16. }
  17. else {
  18. return base * ans * ans ;
  19. }
  20.  
  21. }
  22.  
  23.  
  24. /**************************************************************************************************************************************************************************************************************************************************** */
  25.  
  26.  
  27.  
  28.  
  29.  
  30. //TTTTTTTFFFFFFF -> MID = L + (R - L + 1) / 2
  31. //true l = mid;
  32.  
  33. //false r = mid-1
  34.  
  35.  
  36.  
  37. int n ;
  38. int arr[1000000+9] ;
  39. int needed = 0 ;
  40. bool can(int m) { // 8
  41. needed = 0 ;
  42. for (int i = 0 ; i < n ; i++) {
  43. if ( m>= arr[i] ) {
  44. needed++ ;
  45. }
  46. else {
  47. break ;
  48. }
  49. }
  50. return (needed > 0) ;
  51. }
  52.  
  53.  
  54.  
  55. int32_t main ()
  56. {
  57. fast
  58.  
  59. cin >> n ;
  60. for (int i = 0 ; i < n ; i++){
  61. cin >> arr[i] ;
  62. }
  63. sort(arr,arr+n) ; // 3 6 8 10 11
  64. int q ;
  65. cin >> q ;
  66. while (q--) {
  67. int m ;
  68. cin >> m ;
  69. int l = 0 , r = n-1 ;
  70. while ( l < r ) {
  71. int mid = l + ( r - l + 1) / 2 ;
  72. if (can(m)) {
  73. l = mid ;
  74. }
  75. else {
  76. r = mid-1 ;
  77. }
  78. }
  79. cout << needed << endl ;
  80. }
  81.  
  82. return 0 ;
  83. }
Success #stdin #stdout 0.01s 5308KB
stdin
5
3 10 8 6 11
4
1
10
3
11
stdout
0
4
1
5