第二题,小朱朱的入职问题,哪有问题?


#include <iostream>
#include <vector>
#include <algorithm>

#define INF 999

using namespace std;

int main() {
    long n, m, k;
    cin >> n >> m >> k;

    vector<long> nums(n, 0);
    for (long i = 0; i < n; i++) {
        cin >> nums[i];
    }
    sort(nums.begin(), nums.end());
    
    long test;
    vector<long> minVec;
    vector<long> maxVec;
    long time = m;
    while (time--) {
        cin >> test;
        long j = 0;
        for (; j < nums.size(); j++) {
            if (test <= nums[j]) {
                break;
            }
        }

        long left = j-1;
        long right = j;
        long temp;
        long maxVal = 0;
        long minVal = INF;

        long leftval, rightval;

        for (long i = 0; i < k; i++) {
            if (left >= 0) {
                leftval = nums[left];
            }
            else {
                leftval = -INF;
            }
            if (right < nums.size() ) {
                rightval = nums[right];
            }
            else {
                rightval = INF;
            }

            if ((test - leftval) <= (rightval - test)) {
                    temp = nums[left];
                    left--;
            } else {
                    temp = nums[right];
                    right++;
            }
            
            if (temp > maxVal) {
                maxVal = temp;
            }
            if (temp < minVal) {
                minVal = temp;
            }
        }
        minVec.push_back(minVal);
        maxVec.push_back(maxVal);    
    }

    for (long i = 0; i < m; i++ ) {
        cout << minVec[i] << " " << maxVec[i] << endl;
    
    }
    return 0;
}