이 문제 c언어로 이분탐색 구현해서 풀고 있는데,

내가 짠 코드로는 계속 무한루프 들어가져서 왜그런 지 당체 모르겠음...

좀 도와주라ㅠ;


코드

#include <stdio.h>

#include <string.h>

#include <stdlib.h>


typedef struct {

char site[21];

char pw[21];

}Info;


Info in[100001];

char target[100001][21];


int compare(const void* a, const void* b) {

const Info *str1 = (Info*)a;

const Info *str2 = (Info*)b;


return strcmp(str1->site, str2->site);

}



int main() {

int n, m;

scanf("%d %d", &n, &m);


for (int i = 0; i < n; i++) {

scanf("%s %s", in[i].site, in[i].pw);

}


qsort(in, n, sizeof(Info), compare);


for (int i = 0; i < m; i++) {

scanf("%s", target[i]);

}


for (int i = 0; i < m; i++) {

printf("1\n"); //checking

int s = 0, e = n - 1;

while (s <= e) {

int mid = (s + e) / 2;

printf("2\n"); // checking

if (target[i] == in[mid].site) {

printf("%s\n", in[mid].pw);

break;

}

else if (target[i] < in[mid].site) {

s = mid - 1;

}

else if (target[i] > in[mid].site) {

e = mid + 1;

}

printf("3\n"); // checking

}

}

}