.لینکهای مفید برای شرکت در مسابقه:
میتوانید سوالهای خود را از بخش "سوال بپرسید" مطرح کنید.
توجه کنید که سوال چهارم جنبه الگوریتمی، سوال پنجم جنبه پیادهسازی و سوال ششم جنبه چالشی دارد؛ پیشنهاد میکنیم بعد از حل سه سوال اول، طبق مهارتهای خود، بهترتیب سراغ حل سوالات مد نظر خود بروید.
میخواهیم یک سیستم برای طرح زوج و فرد پیادهسازی کنیم. در این سیستم هر نفر ممکن است چند ماشین داشته باشد. هر ماشین یک پلاک دارد که زوج یا فرد است. زوج یا فرد بودن یک پلاک بستگی به زوج یا فرد بودن رقم سمت راست پلاک دارد.
هر ماشین، میتواند در روزهای زوج یا فرد (بسته به پلاکش) در محدوده طرح زوج و فرد تردد کند و هیچ هزینهای لازم نیست بدهد. ولی اگه در روز غیر از زوجیت پلاکش وارد طرح شود، دو حالت دارد، یا طرح برای آن روز نخریده و جریمه میشود یا طرح خریده که هیچ مشکلی نیست.
با خرید یک طرح روزه برای یک خودرو، از فردای روزی که طرح خریداری شده است به مدت روز، رفت آمد در طرح مشکلی ندارد.
در این سیستم، هر نفر باید یک حساب داشته باشد که در ابتدا اعتبار حسابش صفر است و میتواند اعتبار این حساب را افزایش دهد و یا برای یک ماشینش یک طرح بخرد. (توجه کنید حسابها برای اشخاص است، نه ماشینها).
توجه کنید جریمه شدن یک شخص برای ورود به طرح، از اعتبار حساب این شخص برای خرید طرح جداست. یعنی نباید مبلغ جریمهها از حساب رانندهها کسر شود.
REGISTER
در این درخواست یک نفر با نام <USERNAME>
در لحظه <TIMESTAMP>
به سیستم طرح ترافیک اضافه میشود.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<TIMESTAMP>
یک رشته به فرمت yyyy/mm/dd
است که زمان این اتفاق را نشان میدهد. تضمین میشود این زمان قابل قبول است.در صورتی این فرد با موفقیت به سیستم اضافه میشود که قبلاً هیچ کسی با این <USERNAME>
در سیستم ثبت نام نکرده باشد.
بعد از دریافت این درخواست، در صورتی که این فرد با موفقیت به سیستم اضافه شد پیام REGISTER DONE
و در غیر این صورت پیام INVALID USERNAME
را چاپ کنید.
مثالی از این درخواست:
REGISTER_CAR
در این درخواست یک نفر با نام <USERNAME>
با شماره پلاک <CAR_PLATE>
در لحظه <TIMESTAMP>
به سیستم طرح ترافیک اضافه میکند.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<CAR_PLATE>
یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته میتواند با صفر آغاز شود.<TIMESTAMP>
یک رشته به فرمت yyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.در صورت رخ دادن هر کدام از حالتهای زیر دقیقا یکی از پیامهای زیر را به الویت از بالا به پایین اجرا کنید:
<USERNAME>
وجود ندارد پیام INVALID USERNAME
را چاپ کنید.<CAR_PLATE>
) برای یک خودرو دیگر ثبت شده است (حتی اگر خودرو برای همین راننده باشد) پیام INVALID CAR PLATE
را چاپ کنید.REGISTER CAR DONE
را چاپ کنید.مثالی از این درخواست:
NEW_RECORD
در این درخواست یک ماشین با شماره پلاک <CAR_PLATE>
در لحظه <TIMESTAMP>
وارد محدوده طرح ترافیک شده است.
<CAR_PLATE>
یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته میتواند با صفر آغاز شود.<TIMESTAMP>
یک رشته به فرمت yyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.اگر ماشینی با این شماره پلاک در سیستم ثبت نشده است پیام INVALID CAR PLATE
را چاپ کنید و در غیر این صورت اگر این درخواست در روز فرد آمده ولی پلاک ماشین زوج است یا درخواست در روز زوج آمده ولی پلاک ماشین فرد است و این ماشین برای این روز طرح ندارد پیام PENALTY RECORDED
را چاپ و راننده این ماشین را به اندازه ۱۰۰ جریمه کنید و در غیر این صورت پیام NORMAL RECORDED
را چاپ کنید.
مثالی از این درخواست:
BUY_LICENSE
در این درخواست یک نفر با نام <USERNAME>
برای ماشین خود با شماره پلاک <CAR_PLATE>
یک طرح ترافیک <LENGTH>
روزه در روز <TIMESTAMP>
میخرد.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<CAR_PLATE>
یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته میتواند با صفر آغاز شود.<LENGTH>
یک عدد صحیح از ۱ تا ۱۰۰۰ است.<TIMESTAMP>
یک رشته به فرمت yyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.در صورت رخ دادن هر کدام از حالتهای زیر دقیقا یکی از پیامهای زیر را به الویت از بالا به پایین اجرا کنید:
<USERNAME>
در سیستم وجود ندارد پیام INVALID USERNAME
را چاپ کنید.<CAR_PLATE>
ندارد پیام INVALID CAR PLATE
را چاپ کنید.NO ENOUGH MONEY
را چاپ کنید.BUY LICENSE DONE
را چاپ کنید.توجه کنید خرید طرح ترافیک برای یک خودرو در روز ام به مدت روز یعنی این راننده میتواند در روزهای در محدوده طرح ترافیک تردد کند.
همچنین توجه کنید اگر یک راننده قبلاً طرحی برای ماشین خود برای این روزها خریده باشد به روزهای این طرح اضافه نمیشود بلکه برای یک روز دو طرح دارد.
مثالی از این درخواست:
ADD_BALANCE
در این درخواست فردی با نام <USERNAME>
اعتبار حساب خود در این سامانه را به اندازه <AMOUNT>
در لحظه <TIMESTAMP>
افزایش میدهد.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<AMOUNT>
یک عدد طبیعی کوچکتر یا مساوی ۱۰۰۰ است.<TIMESTAMP>
یک رشته به فرمت yyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.اگر شخصی با نام <USERNAME>
در این سامانه وجود ندارد پیام INVALID USERNAME
و در غیر این صورت پیام ADD BALANCE DONE
را چاپ کنید.
مثالی از این درخواست در ورودی:
GET_BALANCE
در این درخواست فردی با نام <USERNAME>
اعتبار حساب خود در این سامانه را در لحظه <TIMESTAMP>
میپرسد.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<TIMESTAMP>
یک رشته به فرمت yyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.مثالی از این درخواست:
اگر شخصی با نام <USERNAME>
در این سامانه وجود ندارد پیام INVALID USERNAME
و در غیر این صورت مقدار اعتبار حساب این شخص را چاپ کنید.
GET_PENALTY
در این درخواست مقدار جریمههای <USERNAME>
در لحظه <TIMESTAMP>
را چاپ کنید.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<TIMESTAMP>
یک رشته به فرمت yyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.اگر شخصی با نام <USERNAME>
در این سامانه وجود ندارد پیام INVALID USERNAME
و در غیر این صورت مقدار جریمهی این شخص را چاپ کنید.
مثالی از این درخواست:
GET_LICENSE_DEADLINE
در این درخواست اولین روز بعد از <TIMESTAMP>
که ماشین با پلاک <CAR_PLATE>
طرح ندارد را چاپ کنید. (این موضوع ربطی به زوج و فرد بودن پلاک ندارد.)
<CAR_PLATE>
یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته میتواند با صفر آغاز شود.<TIMESTAMP>
یک رشته به فرمت yyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.اگر ماشینی با این شماره پلاک در سیستم ثبت نشده است پیام INVALID CAR PLATE
را چاپ کنید در غیر این صورت اولین روزی که بعد از روز<TIMESTAMP>
این ماشین طرح ندارد را به صورت yyyy/mm/dd
چاپ کنید.
توجه کنید اگر این ماشین تاکنون طرح نداشته است باید فردای <TIMESTAMP>
را چاپ کنید.
مثالی از این درخواست:
در هر سطر از ورودی یکی از درخواستها که در متن سوال آمده است را دریافت میکنید. تعداد درخواستها حداکثر ۳۰۰ است.
بعد از آخرین درخواست برای نشان دادن پایان درخواستها کلمه END
چاپ میشود.
تضمین میشود تمام TIMESTAMP
ها قابل قبول و متمایز و به ترتیب زمان صعودی باشد.
در هر سطر از خروجی پاسخ دستوری را که در ورودی دریافت کردهاید چاپ میکنید.