Hướng dẫn giải của [VT Thiếu nhi] BÀI 31: XASIS


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cho ba điểm có tọa độ nguyên x1, x2, x3 trên trục X (từ 1 đến 10). Tìm vị trí nguyên a để tổng khoảng cách từ 3 điểm đến a là nhỏ nhất. Đọc từ file XASIS.INP và ghi ra file XASIS.OUT.

Cách làm

Vì tọa độ các điểm đều nằm trong đoạn từ 1 đến 10 nên chỉ cần thử lần lượt các vị trí a từ 1 đến 10.

Với mỗi a, tính tổng |x1 - a| + |x2 - a| + |x3 - a| và giữ lại giá trị nhỏ nhất. Mỗi testcase làm như vậy.

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

int main() {
    // Đọc từ file XASIS.INP, ghi ra file XASIS.OUT
    freopen("XASIS.INP", "r", stdin);
    freopen("XASIS.OUT", "w", stdout);

    int t;
    cin >> t;
    // Với mỗi testcase
    for (int tc = 1; tc <= t; tc++) {
        int x1, x2, x3;
        cin >> x1 >> x2 >> x3;
        // Thử mọi vị trí a từ 1 đến 10 (các tọa độ đều nằm trong khoảng này)
        int nhoNhat = -1;
        for (int a = 1; a <= 10; a++) {
            // Tổng khoảng cách từ 3 điểm đến a
            int f = abs(x1 - a) + abs(x2 - a) + abs(x3 - a);
            if (nhoNhat == -1 || f < nhoNhat) {
                nhoNhat = f;
            }
        }
        cout << nhoNhat << "\n";
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.