0
0
sửa như nào để trương trình chạy trong 1 giây với n=10^6
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
236
56
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
long a[N],b[N],minn=N;
int n;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int j=0;j<n;j++)
cin>>b[j];
sort(a,a+n);
sort(b,b+n);
int i=0;
int j=0;
while(i<n && j<n)
{
minn=min(minn,abs(a[i]+b[j]));
if(a[i]+b[j]<=0) { i++; }
else { j++; }
}
cout<<minn;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
0
589
0
mình viết giống mà sao họ báo lỗi ở minn=min(minn,abs(a[i]+b[i]));
236
2365
56
bạn xem lại code mình dùng tknp ở bài nx mới hỏi nha bài đó mik nghĩ là tối ưu
0
589
0
code mình xóa đi viết lại giống bạn mà mấy lần đều k đc
236
2365
56
mình chạy bth mà ?
0
589
0
mình làm theo cách của mình thì đúng 6 ý đầu còn làm theo cách của bạn thì đúng 4 ý cuối
236
2365
56
:))
236
2365
56
thử bài này nè #include<bits/stdc++.h> using namespace std; const int N=1e6; long a[N],b[N],minn=N; int n; int main() { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int j=0;j<n;j++) cin>>b[j]; sort(a,a+n); sort(b,b+n); for (int i=0;i<n;i++) { int j=lower_bound(b,b+n,-a[i])-b; if (j<n) { minn=min(minn,abs(a[i]+b[j])); } if (j>0) { minn=min(minn,abs(a[i]+b[j-1])); } } cout<<minn; return 0; } Rút gọnthử bài này nè #include<bits/stdc++.h> using namespace std; const int N=1e6; long a[N],b[N],minn=N; int n; int main() { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int j=0;j<n;j++) cin>>b[j]; sort(a,a+n); sort(b,b... xem thêm
206
800
248
format code kiểu j v bạn lâu k vào thấy lạ gê :)