+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
در این سوال، شما سیستمی برای مدیریت آگهیهای مسکن طراحی میکنید. هر آگهی میتواند برای فروش، رهن یا اجاره باشد و دارای ویژگیهایی از جمله عنوان، قیمت، متراژ، نوع ملک (آپارتمان یا حیاط)، وضعیت (فروش، رهن یا اجاره)، و مختصات جغرافیایی (عرض و طول جغرافیایی) خواهد بود. شما باید این ویژگیها را در کوئریهای مختلف مانند افزودن آگهی، جستجو و حذف آگهیها مدیریت کنید.
# دستورها
<details class="blue">
<summary>
دستور `add_house`
</summary>
----------
فرم کلی این دستور به صورت زیر است:
```
add_house -name="<title>" -type="<type>" -status="<status>" -price=<price> -area=<area> -latitude=<latitude> -longitude=<longitude> [-desc="<description>"]
```
+ `<title>` عنوان آگهی (منحصربهفرد و اجباری).
+ `<type>` نوع ملک (مانند `apartment` برای آپارتمان یا `yard` برای حیاط و اجباری).
+ `<status>` وضعیت ملک (`sale` برای فروش، `rent` برای رهن یا اجاره و اجباری).
+ `<price>` قیمت ملک (عدد صحیح و مثبت به تومان و اجباری).
+ `<area>` متراژ ملک (عدد صحیح و مثبت بر حسب متر مربع و اجباری).
+ `<latitude>` عرض جغرافیایی ملک (عدد حقیقی و اجباری).
+ `<longitude>` طول جغرافیایی ملک (عدد حقیقی و اجباری).
+ `[description]` توضیحات اختیاری.
اگر عنوان آگهی قبلاً ثبت شده باشد، پیام `invalid title` چاپ شود.
در غیر این صورت، پیام `house added successfully` چاپ شود.
</details>
<details class="blue">
<summary>
دستور `get_houses`
</summary>
----------
فرم کلی این دستور به صورت زیر است:
```
get_houses -type="<type>" -status="<status>" [-min_price=<min_price>] [-max_price=<max_price>] [-min_area=<min_area>] [-max_area=<max_area>] -latitude=<latitude> -longitude=<longitude>
```
این دستور به معنی جستجو برای آگهیهایی با ویژگیهای مشخص است.
+ `<type>` نوع ملک (مانند `apartment` یا `yard` و اجباری).
+ `<status>` وضعیت ملک (`sale` یا `rent` و اجباری).
+ `[min_price]` حداقل قیمت آگهی (عدد صحیح و اختیاری).
+ `[max_price]` حداکثر قیمت آگهی (عدد صحیح و اختیاری).
+ `[min_area]` حداقل متراژ آگهی (عدد صحیح وختیاری).
+ `[max_area]` حداکثر متراژ آگهی (عدد صحیح و اختیاری).
+ `<latitude>` عرض جغرافیایی منطقه جستجو (عدد حقیقی و اجباری).
+ `<longitude>` طول جغرافیایی منطقه جستجو (عدد حقیقی و اجباری).
در این دستور، آگهیها باید بر اساس **نزدیکی جغرافیایی** به منطقه جستجو مرتب شوند. آگهیهایی که نزدیکتر به مختصات جستجو هستند، اول نمایش داده شوند. برای محاسبه نزدیکی از فرمول فاصله هاروارد ($Haversine Formula$) استفاده کنید. سپس نام آگهیهای مرتبشده را به ترتیب در یک خط و با یک فاصله بین آنها چاپ کنید. (نزدیکترین آگهی باید در ابتدای خط چاپ شود.) اگر لیستی که باید چاپ شود خالی است، عبارت `no house found!` را چاپ کنید.
</details>
<details class="blue">
<summary>
دستور `remove_house`
</summary>
فرم کلی این دستور به صورت زیر است:
```
remove_house -name="<title>"
```
این دستور به معنی حذف آگهی با عنوان `<title>` است.
+ اگر آگهی با این عنوان موجود نباشد، پیام `invalid title` چاپ شود.
+ در غیر این صورت، پیام `house removed successfully` چاپ شود.
</details>
# نکات
1. تمام ورودیها حروف کوچک انگلیسی و اعداد هستند و حداکثر طول هر رشته ۲۰ است.
2. قیمت و متراژ همگی مقادیر صحیح و مثبت هستند.
3. مختصات جغرافیایی (عرض و طول) مقادیر حقیقی و دقیق هستند و تا ۴ رقم اعشار در ورودی داده میشوند.
4. مقایسه فاصلهها باید تا حداقل ۴ رقم اعشار دقیق باشند و داوری کد بر اساس ۴ رقم اول اعداد انجام میشود.
5. تضمین میشود فرمت دستورهای ورودی، مطابق با صورت مسئله و معتبر هستند.
6. به حروف کوچک و بزرگ در عبارات خروجی دقت کنید. برای گرفتن امتیاز کامل، خروجی شما باید کاملا شبیه عبارات در صورت مسئله باشند.
# ورودی
در سطر اول عدد صحیح و مثبت $n$ داده میشود که تعداد دستورها را مشخص میکند.
$$1 \leq n \leq 100$$
در $n$ سطر بعدی، هر سطر شامل یک دستور از نوعهای تعریفشده است.
# خروجی
خروجی شامل $n$ سطر است که پاسخ مناسب به هر دستور را چاپ میکند.
# مثالها
## ورودی نمونه ۱
```
7
add_house -name="apartment1" -type="apartment" -status="sale" -price=3000000 -area=80 -latitude=35.6895 -longitude=51.3890
add_house -name="yard1" -type="yard" -status="rent" -price=5000000 -area=200 -latitude=35.6995 -longitude=51.3900
add_house -name="yard2" -type="yard" -status="rent" -price=5000000 -area=200 -latitude=35.6995 -longitude=51.3900
add_house -name="apartment2" -type="apartment" -status="sale" -price=4000000 -area=100 -latitude=35.6985 -longitude=51.3850
get_houses -type="apartment" -status="sale" -latitude=35.6890 -longitude=51.3880
remove_house -name="yard1"
get_houses -type="yard" -status="rent" -latitude=35.6890 -longitude=51.3890
```
## خروجی نمونه ۱
```
house added successfully
house added successfully
house added successfully
house added successfully
apartment1 apartment2
house removed successfully
yard2
```
## ورودی نمونه ۲
```
5
add_house -name="apartment1" -type="apartment" -status="sale" -price=3500000 -area=90 -latitude=35.7100 -longitude=51.3800
add_house -name="apartment2" -type="apartment" -status="sale" -price=3800000 -area=110 -latitude=35.7200 -longitude=51.3700
get_houses -type="apartment" -status="sale" -latitude=35.7100 -longitude=51.3800
get_houses -type="apartment" -status="sale" -latitude=35.7100 -longitude=51.3800 -min_price=3600000
remove_house -name="apartment2"
```
## خروجی نمونه ۲
```
house added successfully
house added successfully
apartment1 apartment2
apartment2
house removed successfully
```