#include<iostream> #include<algorithm> using namespace std; typedef struct { int value; int index; }Number; bool cmp(Number a,Number b) { return a.value < b.value; } int binarySearch(Number a[], int len, int x) { int low = 0, high = len - 1, mid; while (low <= high) { mid = low + (high - low) / 2; if (a[mid].value == x) { return a[mid].index; } else if (a[mid].value < x) { low = mid + 1; } else { high = mid - 1; } } return -1; } int main() { int t, n, a, b, m, x; cin >> t; while (t--) { int value[100000]; Number temp[100000]; int len = 0; cin >> n; while (n--) { char c; cin >> a >> c >> b; value[len] = a; temp[len].value = a; temp[len].index = len; len++; value[len] = b; temp[len].value = b; temp[len].index = len; len++; } sort(temp, temp + len, cmp); cin >> m; while (m--) { cin >> x; int index = binarySearch(temp, len, x); if (index != -1) { printf("%d\n", value[index % 2 == 0 ? index + 1 : index - 1]); } else { printf("UNKNOW\n"); } } printf("\n"); } } |
Double click to view unformatted code.