View Code of Problem 7

#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.


Back to problem 7