Sebuah gunung didefinisikan sebagai satu set segmen garis yang pertama titik memiliki koordinat (0,a)
di mana a > 0
, dan yang terakhir titik memiliki koordinat (b,0)
, di mana b > 0
. Semua titik antara memiliki koordinat y (ordinat) yang benar-benar lebih besar dari 0. Anda diberi titik di gunung yang diurutkan dalam urutan koordinat x (abscissa). Perhatikan bahwa dua titik dapat memiliki koordinat x yang sama, menghasilkan segmen vertikal gunung. Jika Anda diberi dua poin dengan koordinat x yang sama, mereka harus terhubung dalam urutan yang diberikan. Selain itu, mungkin ada segmen horisontal dari gunung. Segmen horizontal ini tidak menyala, apa pun yang terjadi. Semua koordinat adalah bilangan bulat tidak negatif.
Pertanyaannya: berapa panjang total gunung yang akan dinyalakan, dengan asumsi matahari adalah bidang cahaya vertikal tak terbatas yang terletak di sebelah kanan gunung? Angka ini tidak perlu dibulatkan, tetapi jika dibulatkan, sertakan setidaknya empat tempat desimal. Saya telah menyertakan gambar: Di sini, garis-garis yang dicetak tebal mewakili segmen yang menyala. Perhatikan bahwa dalam input, P muncul sebelum Q (PQ adalah segmen garis vertikal) sehingga titik sebelumnya terhubung ke P dan bukan Q.
Anda dapat mengambil input dalam format yang masuk akal, seperti daftar daftar, satu daftar, string, dll.
Kasus cobaan:
(0,3000)
(500, 3500)
(2500, 1000)
(5000,5000)
(9000,2000)
(9000,3500)
(10200,0)
Output: 6200.0000
Ada dua segmen yang menyala di sini, seperti yang ditunjukkan pada gambar ini: Yang pertama memiliki panjang 5000/2 = 2500 dan yang kedua memiliki panjang 3.700.
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
(x1, y1)
dan(x2,y2)
. Titik yang "memblokir" itu adalah(x3, y3)
. Asumsikan y2 <y3 <= y1. Kemudian panjang segmen adalah((y1 - y3)/(y1 - y2))*sqrt((x1 - x2)^2 + (y1 - y2)^2)
. Ini pada dasarnya adalah formula jarak, dikalikan dengan pecahan segmen yang sebenarnya digunakan