https://www.acmicpc.net/problem/1920
N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.
제출 93000 정답 비율 31%
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b)
{
return *(int*)a > *(int*)b ? 1 : (*(int*)a < *(int*)b ? -1 : 0);
}
int bin_search(int* arr, int key, int size) {
int front, mid, back;
front = 0; back = size - 1;
while (1) {
mid = (front + back) / 2;
if (arr[mid] == key) return 1;
if (arr[front] == key) return 1;
if (arr[back] == key) return 1;
if (arr[mid] < key)
front = mid + 1;
else
back = mid - 1;
if (back <= front) return 0;
}
}
int main() {
int n = 0, m=0;
scanf("%d", &n);
int* arr = malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &m);
int* arr2 = malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d", &arr2[i]);
}
qsort(arr, n, sizeof(int), compare);
for (int i = 0; i < m; i++) {
printf("%d\n", bin_search(arr, arr2[j], n));
}
return 0;
}