CCCPaste

2b09720f121fe

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
typedef long long ll;


int main() {
int n, m, K;
cin >> n >> m >> K;

vector<int> desired(n);
vector<int> apartment_size(m);

for(int i = 0; i < n; i++) {
cin >> desired[i];
}
for(int i = 0; i < m; i++) {
cin >> apartment_size[i];
}

sort(desired.begin(), desired.end());
sort(apartment_size.begin(), apartment_size.end());

queue<int> A, B;

for(int i = 0; i < n; i++) {
A.push(desired[i]);
}
for(int i = 0; i < m; i++) {
B.push(apartment_size[i]);
}

int res = 0;

while(!A.empty() and !B.empty()) {
int a = A.front();
int b = B.front();

if(abs(a - b) <= K) {
res++;
A.pop();
B.pop();
}
else if(a < b) {
A.pop();
}
else {
B.pop();
}
}

cout << res << endl;
return 0;
}