
#include <stdio.h>
int main()
{
int i, key, n, l, r, mid;
int narr[100000000];
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d", &n);
for(i=0; i!=n; i++)
scanf("%d", &narr[i]);
scanf("%d", &key);
l=0;
r=n-1;
while(l<=r){
mid=(l+r)/2;
if(narr[mid]==key)
break;
else if(narr[mid]<key)
l=mid+1;
else
r=mid-1;
}
printf("%d", mid+1);
return 0;
}
이분검색을 써봤는데 배열의 길이가 1억이라서 테스트를 못했어요
그레서 좀 줄이고 테스트를 하고 1억으로 바꾸고 컴파일 한다음에
체점했는데
다 이렇게 뜨네요
Time Limit Exceeded / Runtime Error
Time Limit Exceeded / Runtime Error
Time Limit Exceeded / Runtime Error
Time Limit Exceeded / Runtime Error
Time Limit Exceeded / Runtime Error
참고로 컴퓨터는 별 문제는 없어요
지역 변수, 전역 변수로 선언할 때, 할당할 수 있는 메모리의 수가 제한되어 있습니다. 이에 메모리를 1억개 이상 잡는 것은 물론, 3~4천 만개를 넘게 잡는 것도 선언 및 사용이 불가할 것입니다. (할당 가능한 메모리를 넘어가서)
이러한 문제로 인해 1억개의 배열을 선언하는 것을 불가능할 것으로 보이네요.
ps. 00b14 문제에서는 이진탐색을 이용할 수 없습니다.
제시된 예제에서는 입력 데이터들이 정렬되어 있지만, 실제 문제 상황에서는 정렬 되어 있다는 가정이 없습니다.