در این بخش از مسابقه میخواهیم یک پروژه را مرحله به مرحله توسعه دهیم و در هر بخش آن ویژگیهای جدیدی اضافه کنیم. دقت داشته باشید که در این قسمت تمرکز بر روی طراحی، نحوهی پیادهسازی و خوانایی کد شماست. در انتهای هر مرحله تمامی کدهای خود را در قالب یک فایل zip آپلود کنید (هر بخش نمرهی خود را دارد). در انتخاب زبان برنامه نویسی و ساختاربندی فایلها کاملا آزادانه میتوانید عمل کنید.
میخواهیم برنامهای برای زمانبندی خدمات یک کارواش بنویسیم. ساعت کاری این کارواش از ۹ صبح تا ۹ شب است.
این کارواش خدمات زیر را ارائه میکند:
قصد داریم در سه بخش برنامه را گسترش دهیم:
در این بخش، میخواهیم برنامهای بنویسیم که بهصورت تعاملی (interactive) درخواست نوبتدهی کاربران را در بازهی زمانی یک ماهه بگیرد و زمانی به آنها اختصاص دهد. اولین دستور را ۹ صبح اولین روز ماه در نظر بگیرید (ماهها ۳۰ روز هستند).
زمان مورد نیاز برای ارائهٔ خدمتهای کارواش به شرح زیر است:
rooshooyi
): ۱۵ دقیقهnezafat
): ۲۰ دقیقهsefrshooyi
): ۱ ساعتدو نوع رزرو در این کارواش ممکن است:
فرمت ورودی
توجه فرمایید منظور از <list-of-services>
لیستی از سرویسهاست که با +
از هم جدا میشود؛ مثلا nezafat+sefrshooyi
. در یک دستور سرویس تکراری درخواست نخواهد شد.
فرمت خروجی
فرمت ورودی
فرمت خروجی
ورودی نمونه
خروجی نمونه
ورودی نمونه
خروجی نمونه
ورودی نمونه
خروجی نمونه
ويژگيهای جدیدی که در این مرحله برای کارواش میخواهیم:
برای شستوشو ده جایگاه مجزا خواهیم داشت که هنگام رزرو، ماشینها به اولین جایگاه ممکن وارد میشوند.
میخواهیم هنگام رزرو وقت، برای مشتری فاکتور صادر کنیم. جدول هزینههای امسال به شکل زیر است:
نوع خودرو | روشویی rooshooyi |
نظافت nezafat |
صفرشویی sefrshooyi |
---|---|---|---|
sedan | 30T | 15T | 80T |
hatchback | 30T | 10T | 70T |
suv | 40T | 20T | 100T |
فرمت ورودی
فرمت خروجی
فرمت ورودی
فرمت خروجی
ورودی نمونه
خروجی نمونه
ورودی نمونه
خروجی نمونه
بهمنظور توجه بیشتر به مشتریان برتر، برخی از کاربران را VIP لحاظ میکنیم. اگر یک مشتری بیشتر از ۴ بار از خدمات کارواش استفاده کند، بهصورت خودکار در ردهٔ VIP قرار میگیرد.
مشتریان VIP، یک بخش جداگانه با ۵ جایگاه شستوشو دارند (که برای نوبتدهی به کاربران عادی استفاده نمیشوند). شمارهی این جایگاهها از ۱۱ تا ۱۵ است. هنگام نوبتدهی به این مشتریان تا جای ممکن از این جایگاهها استفاده میشود؛ مگر اینکه
در رزرو earliest، جایگاههای عادی برای زمان نزدیکتری قابل رزرو بودند.
در رزرو با روز و ساعت مشخص، هیچ جایگاه VIP، خالی نباشد.
بدین منظور یک دستور اضافه هم نیاز خواهیم داشت که لیست مشتریان VIP را اعلام کند.
فرمت ورودی
توجه فرمایید که <user-id>
به شکل یک عدد سه رقمی از 000
تا 999
گزارش میشود.
فرمت خروجی
فرمت ورودی
فرمت خروجی
فرمت ورودی
فرمت خروجی
ورودی نمونه
خروجی نمونه
ورودی نمونه
خروجی نمونه
ورودی نمونه
خروجی نمونه
با این فرض که هر کدام از این کاربران، در ردهی VIP قرار گرفتهاند.