#18226: 求救(TLE)


089487 (089487)

學校 : 國立臺灣師範大學附屬高級中學
編號 : 82069
來源 : [140.112.150.137]
最後登入時間 :
2024-10-03 16:28:37
d478. 共同的數 - 簡易版 | From: [223.140.228.113] | 發表日期 : 2019-06-29 08:38

請問為何我用binary search 會TLE?

以下是我的程式碼

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b;
while (scanf("%d%d",&a,&b)==2)
{
for (int g = 0; g < a; g++)
{
int n[b];
int m[b],num=0;
for (int i = 0; i < b; i++) scanf("%d",&n[i]);
cout<<endl;
for (int i = 0; i < b; i++) scanf("%d",&m[i]);
int first = 0;
for (int i = 0; i < b; i++)
{
int end = b-1,j;
if(n[i]<m[first]) continue;
else if(n[i]==m[first] ) {num++;first++;continue;
}
if(n[i]>m[end])break;
while (end>=first)
{
j = (first + end) / 2;
if(n[i]>m[j]&&n[i]<m[j+1]||(n[i]<m[j]&&n[i]>m[j-1])) {first=j;break;}
if (n[i] < m[j])end--;
else if (n[i] > m[j]) first++;
else { num++; first = j; break; }
}
}
printf("%d\n",num);

}
}
return 0;
}

 
ZeroJudge Forum