다른사람 코드 봐도 나랑 똑같이 풀었는데 ㅠ
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int have[500001];
int mgive[500001];
int ans[500001];
int left;
int right;
int n, m;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> have[i];
}
cin >> m;
for (int i = 0; i < m; i++)
{
cin >> mgive[i];
}
sort(have, have + n);
for (int i = 0; i < m; i++)
{
int left = 0; int right = n - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (mgive[i] == have[mid])
{
ans[i]=1;
break;
}
else if (mgive[i] > have[mid])
{
int left = mid + 1;
}
else
{
int right = mid - 1;
}
}
for(int i=0;i<m;i++)
{
cout<<ans[i]<<' ';
}
}
}
sort에서 500000만 크기를 sort해서 시간초과걸린듯 일단 코드좀고치셈 1. 일단 n,m을 cin 으로 받은다음에 배열선언해주자 int have[n] 500001 이런거 쓰지말고 2. while문 안에서 left right 선언을 또하고있음.
감사함다
3. binary search같은건 함수로 구현하는게 뒤에문제 풀기에도 편하고 니가 보기에도편할꺼임 코드너무복잡함
그리고 bool함수로 1과 0 표현이가능하니까 굳이 arr란 배열도 필요없음
ans
https://gall.dcinside.com/mgallery/board/view/?id=ps&no=26299&page=1