Submission details
Task:Apartments
Sender:Ciphra
Submission time:2025-09-09 00:15:23 +0300
Language:C++ (C++11)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:41:16: error: missing template arguments before 'bsActual'
   41 |   BinarySearch bsActual(m, pred);
      |                ^~~~~~~~
input/code.cpp:43:17: error: 'bsActual' was not declared in this scope
   43 |     std::cin >> bsActual.vec[i];
      |                 ^~~~~~~~
input/code.cpp:46:13: error: 'bsActual' was not declared in this scope
   46 |   std::sort(bsActual.vec.begin(), bsActual.vec.end());
      |             ^~~~~~~~

Code

#include <algorithm>
#include <vector>
template<typename func>
struct BinarySearch{
  func predicate;
  std::vector<int> vec;
  int n;
  BinarySearch(int n, func p): vec(n), predicate(p), n(n){}

  int search(int x, int i, int j){ //i=0;j=n-1
    while(i<=j){
      int mid = i + (j - i) / 2;

      if (predicate(vec[mid], x)){
        return mid;
      } else if (vec[mid] > x) {
        j = mid-1;
      } else if (vec[mid] < x) {
        i = mid+1;
      }
    }

    return -1;
  }
};



#include <iostream>
#include <vector>
int main(){
  int n, m, k;
  std::cin >> n >> m >> k;
  auto pred = [&](int mid, int x){
    return std::abs(mid - x) <= k;
  };
  std::vector<int> desired(n);
  for (int i = 0; i<n; ++i){
    std::cin >> desired[i];
  }
  BinarySearch bsActual(m, pred);
  for (int i = 0; i<m; ++i){
    std::cin >> bsActual.vec[i];
  }

  std::sort(bsActual.vec.begin(), bsActual.vec.end());
  std::sort(desired.begin(), desired.end());
  
  int d = 0;
  int a = 0;
  int numFound = 0;
  
  while(d<n && a<m){
    int found = bsActual.search(desired[d], a, m-1);
    if (found!=-1) {
      a=found+1; ++numFound;
    }
    ++d;
  }
  std::cout << numFound << "\n";
}