View Code of Problem 197

#include <stdio.h>
//1000000001
//10001
int binarySerach(int a[], int len, int key) {
	int low = 0, high = len - 1, mid;
	while (low < high) {
		mid = low + (high - low) / 2;
		if (a[mid] < key) {
			low++;
		}
		else  if (a[mid] > key) {
			high--;
		}
		else {
			return mid;
		}
	}
	return -1;
}

int main() {
	int min[1000000001];
	int max[1000000001];
	int flag[1000000001] = {0};
	int gap = 1;
	for (int i = 1;i < 1000000001;i++) {
		if (!flag[i]) {
			flag[i] = 1;
			min[gap] = i;
			max[gap] = i + gap;
			if (i + gap < 1000000001) {
				flag[i + gap] = 1;
			}
			gap++;
		}
	}
	int a, b;
	while(scanf("%d %d", &a, &b) != EOF) {
		int res = 1;
		int maxN = a > b ? a : b;
		int minN = a < b ? a : b;
		int index = binarySerach(min, gap, minN);
		if (index > 0 && max[index] == maxN) {
			res = 0;
		}
		printf("%d\n", res);
	}
}
/*
F:\temp\22439316.113807\Main.c: In function 'main':
F:\temp\22439316.113807\Main.c:23: error: size of array 'min' is too large
F:\temp\22439316.113807\Main.c:24: error: size of array 'max' is too large
F:\temp\22439316.113807\Main.c:25: error: size of array 'flag' is too large
*/

Double click to view unformatted code.


Back to problem 197