Top Fırlanması
Fırlanan toppar ən məşhur və ənənəvi oyuncaqlardan biridir. Onları fırlatmaqla yanaşı, öz topparını hazırlamaq da populyar bir əyləncədir.
Toppar hazırlamağın ən asan yollarından biri kartondan müəyyən bir forma kəsmək və onun kütlə mərkəzindən bir ox çubuğu keçirməkdir. Peşəkar hazırlanmış topparlar adətən üç ölçülü formalara malikdir, lakin bu məsələdə biz yalnız iki ölçülü olanları nəzərdən keçiririk.
Adətən, topparlar dövri simmetrik formalara malikdir, məsələn, dairə, düzbucaqlı (iki qat dövri simmetriya ilə) və ya müntəzəm üçbucaq (üç qat simmetriya ilə). Belə simmetriyalar onların kütlə mərkəzlərini müəyyən etməkdə faydalı olsa da, mütləq tələb olunmur; asimmetrik bir toppar da əgər onun oxu düzgün şəkildə kütlə mərkəzində deşilibsə, yaxşı fırlanır.
Bir topparın forması kartondan kəsilməsi üçün bir yol olaraq verildikdə, sizin vəzifəniz onun kütlə mərkəzini tapmaq və yaxşı fırlanmasını təmin etməkdir. Həmçinin, kütlə mərkəzinin kəsilmiş karton hissəsində olub-olmadığını müəyyən etməlisiniz. Əgər yoxdursa, əlbəttə ki, ox çubuğunu deşə bilməzsiniz.
Java Xüsusi: Təqdim olunan Java proqramları "java.awt.Shape" interfeysini həyata keçirən siniflərdən istifadə edə bilməz. Onlardan yalnız debugging məqsədləri üçün istifadə edə bilərsiniz.
Giriş verilənləri
Giriş, hər biri kartonda bir toppar kəsmək üçün saat əqrəbi istiqamətinin əksinə bir yolu təsvir edən çoxlu datasetlərdən ibarətdir. Bir yol, hər biri bir xətt seqmentini və ya bir qövsü göstərən komanda xətlərinin ardıcıllığı ilə göstərilir.
Aşağıda verilən komandaların təsvirində, cari mövqe, varsa, növbəti kəsimə başlamaq üçün mövqedir. Bir komanda ilə müəyyən edilmiş kəsimi yerinə yetirdikdən sonra, cari mövqe edilən kəsimin son mövqeyinə köçürülür.
Verilən komandalar aşağıda sadalananlardan biridir. Komanda adı bir sətirin ilk sütunundan başlayır və komanda ilə onun arqumentləri boşluqla ayrılır. Bütün komanda arqumentləri tam ədədlərdir.
start x y
Bir yolun başlanğıc mövqeyini göstərir. Bu komanda özü heç bir kəsimi göstərmir; yalnız cari mövqeni (x, y) olaraq təyin edir.
line x y
Cari mövqedən (x, y) mövqeyinə, cari mövqeyə bərabər olmayan bir düz xətt boyunca xətti kəsimi göstərir.
arc x y r
Dairəvi qövs boyunca dairəvi kəsimi göstərir. Qövs cari mövqedən başlayır və (x, y) mövqeyində bitir, cari mövqeyə bərabər deyil. Qövsün radiusu |r|-dir. r mənfi olduqda, dairənin mərkəzi bu dairəvi kəsimin istiqamətinin sol tərəfindədir; müsbət olduqda isə sağ tərəfindədir (Şəkil 1). r-nin mütləq dəyəri qövsün iki ucu arasındakı məsafənin yarısından böyükdür. Başlanğıc və son mövqeləri göstərilən radiusla birləşdirən iki qövs arasında, göstərilən qövs mərkəzi bucağı 180 dərəcədən az olan qövsdür.
close
Yolu başlanğıc mövqeyə xətti kəsim edərək bağlayır və dataseti tamamlayır. Əgər cari mövqe artıq başlanğıc mövqedədirsə, bu komanda sadəcə datasetin sonunu göstərir.
Aşağıdakı şəkil bir komanda ardıcıllığının və onun müvafiq yolunun nümunəsini verir. Qeyd edək ki, bu halda, verilən radius −r mənfidir və beləliklə qövsün mərkəzi qövsün solundadır. Qövs komandası bu şəkildə göstərildiyi kimi təfsir edilməlidir və eyni dairədə əksinə deyil.
Şəkil 1: Qismən komanda ardıcıllığı və indiyə qədər göstərilən yol
Bir dataset start komandası ilə başlayır və close komandası ilə bitir.
Girişin sonu end komanda ilə göstərilir.
Bir datasetdə ən çox 100 komanda və girişdə ən çox 100 dataset var. Bütün koordinatların və radiusların mütləq dəyərləri 100-dən kiçik və ya bərabərdir.
Yolun özünü kəsmədiyini və ya toxunmadığını qəbul edə bilərsiniz. Həmçinin, yolların heç vaxt kartonun kənarlarından kənara çıxmayacağını qəbul edə bilərsiniz, yəni, karton virtual olaraq sonsuz böyükdür.
Çıxış verilənləri
Hər bir dataset üçün, göstərilən yol ilə kəsilmiş topparın kütlə mərkəzinin x- və y-koordinatlarını və sonra bu mərkəzin topparın üzərində olub-olmadığını göstərən '+' və ya '-' simvolunu ehtiva edən bir sətir çıxarın. İki koordinat onluq kəsir şəklində olmalıdır. İki koordinat arasında və y-koordinatı ilə '+' və ya '-' simvolu arasında boşluq olmalıdır. Başqa heç bir simvol çıxarılmamalıdır. Koordinatlar 10^{−3}-dən az səhvlərə malik ola bilər. Kütlə mərkəzinin yolun ən az 10^{−3} məsafəsində olduğunu qəbul edə bilərsiniz.
İpuçları
Kütlə mərkəzlərinin mühüm xüsusiyyəti odur ki, bir obyekt O O_1, ..., O_n hissələrinə və M_1, ..., M_n kütlələrinə bölünə biləndə, O-nun kütlə mərkəzi aşağıdakı kimi hesablana bilər:
burada G_k O_k-nın kütlə mərkəzini göstərən vektordur.
Radiusu r və bucağı θ (radianla) olan dairəvi seqmentin qövs uzunluğu s = rθ və onun chord uzunluğu . Onun sahə ölçüsü A = r^2(θ − sinθ)/2 və onun kütlə mərkəzi G dairə mərkəzindən y = 2r^3 sin^3(θ/2)/(3A) məsafədədir.
Şəkil 2: Dairəvi seqment və onun kütlə mərkəzi
Şəkil 3: İlk nümunə toppar