Trang chủ Tin Học Lớp 10 Trên trục tọa độ Ox có n điểm xanh và n điểm đỏ. Điểm xanh thứ i có tọa độ...
Câu hỏi :

Trên trục tọa độ Ox có n điểm xanh và n điểm đỏ. Điểm xanh thứ i có tọa độ bi , điểm đỏ thứ i có tọa độ ri . Với hai điểm có tọa độ x1 và x2, ta định nghĩa khoảng cách giữa hai điểm đó là là |x2 x1|. Hãy tìm khoảng cách nhỏ nhất giữa một cặp điểm xanh và điểm đỏ bất kì trong số các điểm đã cho. Dữ liệu Dòng đầu tiên gồm số nguyên n (1 n 105 ) - số điểm xanh và cũng là số điểm đỏ. Dòng thứ hai gồm n số nguyên b1, b2, . . . , bn (1 bi 109 ) - với bi là tọa độ của điểm xanh thứ i. Dòng thứ ba gồm n số nguyên r1, r2, . . . , rn (1 ri 109 ) - với ri là tọa độ của điểm xanh thứ i. Kết quả In ra khoảng cách nhỏ nhất giữa một cặp điểm xanh và điểm đỏ bất kì Ví dụ Sample Input Sample Output 1 2 6 4 2 1 7 10 5 2 Giải thích Ở ví dụ thứ nhất, khoảng cách giữa điểm xanh duy nhất và điểm đỏ duy nhất là |2 6| = 4 Ở ví dụ thứ hai: Khoảng cách giữa điểm xanh thứ 1 và điểm đỏ thứ 1 là |1 10| = 9 Khoảng cách giữa điểm xanh thứ 1 và điểm đỏ thứ 2 là |1 5| = 4 Khoảng cách giữa điểm xanh thứ 2 và điểm đỏ thứ 1 là |7 10| = 3 Khoảng cách giữa điểm xanh thứ 2 và điểm đỏ thứ 2 là |7 5| = 2 Do đó, khoảng cách nhỏ nhất cần tìm là 2 Chấm điểm Subtask 1 (50% số test): n 1000 Subtask 2 (50% số test): Không có giới hạn gì thêm c++

Lời giải 1 :

`Code` `C`++:

#include <bits/stdc++.h>
#include <iostream>
#define ll long long
#define str string
#define db double
#define do "\n"
#define ch char
ll n,q,i,j,l,r,a[100005],b[100005],vt,mi,k;
int tknp(long long k,int l,int r){ //hàm tìm kiếm nhị phân
int i=l, j=r;
while(i<=j){
 int mid=(i+j)/2;
 if (a[mid]==k) return mid;
 if (a[mid]>k) j=mid-1;
 else i=mid+1;
}
return i;
}
using namespace std;
int main() {
cin>>n;
for (i=1; i<=n; i++)
 cin>>a[i];
sort (a+1,a+n+1);
mi=1000000000;
for (i=1; i<=n; i++){
 cin>>k;
 vt=tknp(k,1,n);
 if (vt==1)
  mi=min(mi,abs(k-a[1]));
 else
  if (vt>n)
   mi=min(mi,abs(k-a[n]));
 else
  mi=min(mi, min (abs(k-a[vt]), min (abs(k-a[vt-1]), abs(k-a[vt+1]))));
}
cout<<mi;
    return 0;
}

_____________________________

`@``kieu`

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 10

Lớp 10 - Năm đầu tiên ở cấp trung học phổ thông, chúng ta sẽ có nhiều bạn bè mới đến từ những nơi khác nhau. Ngôi trường mới, xa nhà hơn, mở ra một thế giới mới với nhiều điều thú vị. Hãy mở lòng đón nhận và tận hưởng những trải nghiệm mới!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK