المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۸:عملی:سوال ۱۲

بزرگ‌راه و هفت کوتوله

یکی بود یکی نبود. کوتوله‌آباد سرزمینی بود که چند خانواده‌ی کوتوله در آن زندگی می‌کردند. هر خانواده در یک خانه ساکن بود. کوتوله‌ها غالبا دوستانشان از خانواده‌های دیگر را ملاقات می‌کردند. ناگهان آدم‌های بزرگ تصمیم گرفتند چند بزرگ‌راه مستقیم احداث کنند که بعضی از طرح‌های پیش‌نهادی برای این بزرگ‌راه‌ها از میان کوتوله‌آباد می‌گذشت. کوتوله‌ها آن‌قدر کوچک و کند بودند که نمی‌توانستند سالم از بزرگ‌راه عبور کنند.

کوتوله‌ها دوست ندارن یک بزرگ‌راه خانه‌هایشان را به دو بخش ناتهی تقسیم کند. آن‌ها پس از آن‌که بفهمند کدام بزرگ‌راه مطابق میل آن‌ها نیست می‌توانند با جادوجنبل جلوی احداث آن را بگیرند. شما به این کوتوله‌ها که حتی دست‌هایشان به صفحه‌ی کلید هم نمی‌رسد کمک کنید.

مسئله

$N$ نقطه (خانه‌های کوتوله‌ها) در صفحه و چند خط مستقیم (بزرگ‌راه‌ها) داده شده‌اند. برای هر خط باید تعیین کنید که آیا همه‌ی نقطه‌ها در یک طرف آن خط واقع هستند یا خیر. برنامه‌ شما باید با خواندن مشخصات یک خط پاسخ مربوط به آن را در خروجی چاپ کند قبل از آن‌که مشخصات خط بعدی را بخواند. می‌توانید فرض کنید که هیچ بزرگ‌راهی از میان خانه‌ای نمی‌گذرد.

ورودی

برنامه‌ی شما باید ورودی را از ورودی استاندارد بخواند. اولین سطر ورودی حاوی یک عدد صحیح $N$ ( $0\leq N \leq 10^5$ ) است. در $N$ سطر بعدی، $i$ امین سطر حاوی دو عدد حقیقی $x_i$ و $y_i$ ( $-10^9 \leq x_i,y_i \leq 10^9$ ) است که با یک فاصله از هم جدا شده‌اند و مختصات خانه‌ی $i$ ام را نشان می‌دهد. هر یک از سطرهای بعدی حاوی چهار عدد حقیقی $X_1,Y_1,X_2,Y_2$ (از چپ به راست) ( $-10^9\leq X_1,Y_1X_2,Y_2 \leq 10^9$ ) که توسط فاصله از هم جدا شده‌اند است. این عددها مختصات دو نقطه‌ی متمایز $[X_1,Y_1]$ و $[X_2,Y_2]$ واقع بر یک بزرگ‌راه هستند.

خروجی

خروجی را در خروجی استاندارد بنویسید. برای هر سطر ورودی، خروجی برنامه شما باید یک سطر حاوی رشته‌ی $GOOD$ باشد اگر همه‌ی نقطه‌ها در یک طرف آن خط قرار داشته باشند و در غیر این صورت حاوی رشته‌ی $BAD$ باشد. پس از نوشتن هر سطر در خروجی برنامه‌ی شما باید بافر فایل خروجی را $flush$ کند. در بخش‌های بعد می‌توانید مثالی از این که چگونه این کار را انجام دهید بیابید.

ما برنامه‌های شما را پس از آن‌که پساخ مربوط به آخرین بزرگ‌راه را داد متوقف می‌کنیم. توجه کنید که برنامه‌ی شما نباید خودش متوقف شود. می‌توانید فرض کنید که بیش از $10^5$ بزرگ‌راه وجود ندارد.

هشدار

توصیه می‌شود که از داده‌گونه‌ی $double$ برای ذخیره‌ی اعداد حقیقی استفاده کنید. توجه کنید که هنگام استفاده از حساب اعداد حقیقی ممکن است خطاهای «گرد کردن» ظاهر شود. اگر می‌خواهید ببینید دو عدد حقیقی $x$ و $y$ مساوی هستند یا خیر از آزمون $x=y$ استفاده نکنید و به جای آن از $|x-y| <e$ استفاده کنید که $e$ یک عدد ثابت کوچک است. (برای $e$ مقدار $10^{-4}$ توصیه می‌شود.)

ورودي و خروجي نمونه

ورودي نمونه خروجي نمونه
4
0.0 0
6.00 -0.001
3.125 4.747
4.747 0.47
5 3 7 0
4 -4.7 7 4.7
4 47 4 94
GOOD
BAD
BAD‎

ابزار صفحه