#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm> // Diperlukan untuk std::max
#include <utility> // Diperlukan untuk std::pair
// Tipe data untuk merepresentasikan sebuah titik
using Point = std::pair<double, double>;
// Fungsi untuk menghitung jarak horizontal antara dua titik
double horizontalDistance(const Point& p1, const Point& p2) {
return std::abs(p1.first - p2.first);
}
int main() {
// Contoh data titik (subproblem 1: representasi data)
std::vector<Point> points = {{1.0, 2.0}, {5.0, 8.0}, {0.0, 1.5}, {10.0, 3.0}};
// Inisialisasi jarak terjauh (subproblem 3: pencarian)
double maxHorizontalDist = 0.0;
// Iterasi untuk menemukan jarak terjauh (subproblem 3: iterasi)
// (loop untuk setiap titik)
for (size_t i = 0; i < points.size(); ++i) {
// (loop untuk setiap titik lainnya, menghindari perbandingan ganda)
for (size_t j = i + 1; j < points.size(); ++j) {
// Hitung jarak horizontal (subproblem 2: fungsi jarak)
double dist = horizontalDistance(points[i], points[j]);
// Perbarui jarak maksimum jika jarak saat ini lebih besar
maxHorizontalDist = std::max(maxHorizontalDist, dist);
}
}
// Cetak hasil
std::cout << "Jarak horizontal terjauh adalah: " << maxHorizontalDist << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxhbGdvcml0aG0+IC8vIERpcGVybHVrYW4gdW50dWsgc3RkOjptYXgKI2luY2x1ZGUgPHV0aWxpdHk+ICAgLy8gRGlwZXJsdWthbiB1bnR1ayBzdGQ6OnBhaXIKCi8vIFRpcGUgZGF0YSB1bnR1ayBtZXJlcHJlc2VudGFzaWthbiBzZWJ1YWggdGl0aWsKdXNpbmcgUG9pbnQgPSBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+OwoKLy8gRnVuZ3NpIHVudHVrIG1lbmdoaXR1bmcgamFyYWsgaG9yaXpvbnRhbCBhbnRhcmEgZHVhIHRpdGlrCmRvdWJsZSBob3Jpem9udGFsRGlzdGFuY2UoY29uc3QgUG9pbnQmIHAxLCBjb25zdCBQb2ludCYgcDIpIHsKICAgIHJldHVybiBzdGQ6OmFicyhwMS5maXJzdCAtIHAyLmZpcnN0KTsKfQoKaW50IG1haW4oKSB7CiAgICAvLyBDb250b2ggZGF0YSB0aXRpayAoc3VicHJvYmxlbSAxOiByZXByZXNlbnRhc2kgZGF0YSkKICAgIHN0ZDo6dmVjdG9yPFBvaW50PiBwb2ludHMgPSB7ezEuMCwgMi4wfSwgezUuMCwgOC4wfSwgezAuMCwgMS41fSwgezEwLjAsIDMuMH19OwoKICAgIC8vIEluaXNpYWxpc2FzaSBqYXJhayB0ZXJqYXVoIChzdWJwcm9ibGVtIDM6IHBlbmNhcmlhbikKICAgIGRvdWJsZSBtYXhIb3Jpem9udGFsRGlzdCA9IDAuMDsKCiAgICAvLyBJdGVyYXNpIHVudHVrIG1lbmVtdWthbiBqYXJhayB0ZXJqYXVoIChzdWJwcm9ibGVtIDM6IGl0ZXJhc2kpCiAgICAvLyAobG9vcCB1bnR1ayBzZXRpYXAgdGl0aWspCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvaW50cy5zaXplKCk7ICsraSkgewogICAgICAgIC8vIChsb29wIHVudHVrIHNldGlhcCB0aXRpayBsYWlubnlhLCBtZW5naGluZGFyaSBwZXJiYW5kaW5nYW4gZ2FuZGEpCiAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgcG9pbnRzLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgIC8vIEhpdHVuZyBqYXJhayBob3Jpem9udGFsIChzdWJwcm9ibGVtIDI6IGZ1bmdzaSBqYXJhaykKICAgICAgICAgICAgZG91YmxlIGRpc3QgPSBob3Jpem9udGFsRGlzdGFuY2UocG9pbnRzW2ldLCBwb2ludHNbal0pOwogICAgICAgICAgICAvLyBQZXJiYXJ1aSBqYXJhayBtYWtzaW11bSBqaWthIGphcmFrIHNhYXQgaW5pIGxlYmloIGJlc2FyCiAgICAgICAgICAgIG1heEhvcml6b250YWxEaXN0ID0gc3RkOjptYXgobWF4SG9yaXpvbnRhbERpc3QsIGRpc3QpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBDZXRhayBoYXNpbAogICAgc3RkOjpjb3V0IDw8ICJKYXJhayBob3Jpem9udGFsIHRlcmphdWggYWRhbGFoOiAiIDw8IG1heEhvcml6b250YWxEaXN0IDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==