1 người đang xem
25 ❤︎ Bài viết: 28 Tìm chủ đề
3333 8
Link bài:

Thuật toán:

  • Do hai ngôi nhà gần nhau nhất chắc chắn sẽ nằm cạnh nhau. Ta sẽ sắp xếp các ngôi nhà theo thứ tựtừ nhỏ đến lớn để dễ dàng tính toán.
  • Khoảng cách giữa ngôi nhà thứ i và ngôi nhà thứ j tới đầu đường là ai và aj => Khoảng cách giữa hai ngôi nhà i và j là ai-aj (i > j).
  • Ta dùng biến ans để lưu trữ giá trị ai-aj nhỏ nhất tìm được.

Code:

Mã:
#include <bits/stdc++.h>
using namespace std;

int n, ans = 1000000000, a[100007];

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    //freopen("nhga.inp", "r", stdin);
    //freopen("nhga.out", "w", stdout);
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    sort(a+1, a+1+n);
    for (int i = 2; i <= n; i++) if (a[i] - a[i-1] < ans) ans = a[i] - a[i-1];
    cout << ans;
    
    return 0;
}
 

Những người đang xem chủ đề này

Xu hướng nội dung

Back