- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
میخواهیم یک سیستم برای طرح زوج و فرد پیادهسازی کنیم. در این سیستم هر نفر ممکن است چند ماشین داشته باشد. هر ماشین یک پلاک دارد که زوج یا فرد است. زوج یا فرد بودن یک پلاک بستگی به زوج یا فرد بودن رقم سمت راست پلاک دارد.
هر ماشین، میتواند در روزهای زوج یا فرد (بسته به پلاکش) در محدوده طرح زوج و فرد تردد کند و هیچ هزینهای لازم نیست بدهد. ولی اگه در روز غیر از زوجیت پلاکش وارد طرح شود، دو حالت دارد، یا طرح برای آن روز نخریده و جریمه میشود یا طرح خریده که هیچ مشکلی نیست.
با خرید یک طرح روزه برای یک خودرو، از فردای روزی که طرح خریداری شده است به مدت روز، رفت آمد در طرح مشکلی ندارد.
در این سیستم، هر نفر باید یک حساب داشته باشد که در ابتدا اعتبار حسابش صفر است و میتواند اعتبار این حساب را افزایش دهد و یا برای یک ماشینش یک طرح بخرد. (توجه کنید حسابها برای اشخاص است، نه ماشینها).
توجه کنید جریمه شدن یک شخص برای ورود به طرح، از اعتبار حساب این شخص برای خرید طرح جداست. یعنی نباید مبلغ جریمهها از حساب رانندهها کسر شود.
درخواستها
درخواست REGISTER
REGISTER
در این درخواست یک نفر با نام <USERNAME>
در لحظه <TIMESTAMP>
به سیستم طرح ترافیک اضافه میشود.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<TIMESTAMP>
یک رشته به فرمتyyyy/mm/dd
است که زمان این اتفاق را نشان میدهد. تضمین میشود این زمان قابل قبول است.
در صورتی این فرد با موفقیت به سیستم اضافه میشود که قبلاً هیچ کسی با این <USERNAME>
در سیستم ثبت نام نکرده باشد.
بعد از دریافت این درخواست، در صورتی که این فرد با موفقیت به سیستم اضافه شد پیام REGISTER DONE
و در غیر این صورت پیام INVALID USERNAME
را چاپ کنید.
مثالی از این درخواست:
درخواست REGISTER_CAR
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
NEW_RECORD
در این درخواست یک ماشین با شماره پلاک <CAR_PLATE>
در لحظه <TIMESTAMP>
وارد محدوده طرح ترافیک شده است.
<CAR_PLATE>
یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته میتواند با صفر آغاز شود.<TIMESTAMP>
یک رشته به فرمتyyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.
اگر ماشینی با این شماره پلاک در سیستم ثبت نشده است پیام INVALID CAR PLATE
را چاپ کنید و در غیر این صورت اگر این درخواست در روز فرد آمده ولی پلاک ماشین زوج است یا درخواست در روز زوج آمده ولی پلاک ماشین فرد است و این ماشین برای این روز طرح ندارد پیام PENALTY RECORDED
را چاپ و راننده این ماشین را به اندازه ۱۰۰ جریمه کنید و در غیر این صورت پیام NORMAL RECORDED
را چاپ کنید.
مثالی از این درخواست:
درخواست BUY_LICENSE
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
ADD_BALANCE
در این درخواست فردی با نام <USERNAME>
اعتبار حساب خود در این سامانه را به اندازه <AMOUNT>
در لحظه <TIMESTAMP>
افزایش میدهد.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<AMOUNT>
یک عدد طبیعی کوچکتر یا مساوی ۱۰۰۰ است.<TIMESTAMP>
یک رشته به فرمتyyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.
اگر شخصی با نام <USERNAME>
در این سامانه وجود ندارد پیام INVALID USERNAME
و در غیر این صورت پیام ADD BALANCE DONE
را چاپ کنید.
مثالی از این درخواست در ورودی:
درخواست GET_BALANCE
GET_BALANCE
در این درخواست فردی با نام <USERNAME>
اعتبار حساب خود در این سامانه را در لحظه <TIMESTAMP>
میپرسد.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<TIMESTAMP>
یک رشته به فرمتyyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.
مثالی از این درخواست:
اگر شخصی با نام <USERNAME>
در این سامانه وجود ندارد پیام INVALID USERNAME
و در غیر این صورت مقدار اعتبار حساب این شخص را چاپ کنید.
درخواست GET_PENALTY
GET_PENALTY
در این درخواست مقدار جریمههای <USERNAME>
در لحظه <TIMESTAMP>
را چاپ کنید.
<USERNAME>
یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.<TIMESTAMP>
یک رشته به فرمتyyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.
اگر شخصی با نام <USERNAME>
در این سامانه وجود ندارد پیام INVALID USERNAME
و در غیر این صورت مقدار جریمهی این شخص را چاپ کنید.
مثالی از این درخواست:
درخواست GET_LICENSE_DEADLINE
GET_LICENSE_DEADLINE
در این درخواست اولین روز بعد از <TIMESTAMP>
که ماشین با پلاک <CAR_PLATE>
طرح ندارد را چاپ کنید. (این موضوع ربطی به زوج و فرد بودن پلاک ندارد.)
<CAR_PLATE>
یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته میتواند با صفر آغاز شود.<TIMESTAMP>
یک رشته به فرمتyyyy/mm/dd
است که زمان این اتفاق را نشان میدهد.
اگر ماشینی با این شماره پلاک در سیستم ثبت نشده است پیام INVALID CAR PLATE
را چاپ کنید در غیر این صورت اولین روزی که بعد از روز<TIMESTAMP>
این ماشین طرح ندارد را به صورت yyyy/mm/dd
چاپ کنید.
توجه کنید اگر این ماشین تاکنون طرح نداشته است باید فردای <TIMESTAMP>
را چاپ کنید.
مثالی از این درخواست:
نکات
- این سامانه برای سال ۱۴۰۰ به بعد طراحی شده است یعنی تمام زمانهای داده شده در سال ۱۴۰۰ یا بعد از آن است. همچنین میدانیم ۱۴۰۰/۰۱/۰۱ شنبه است.
- منظور از روزهای زوج، شنبه، دوشنبه و چهارشنبه و منظور از روزهای فرد، یکشنبه، سهشنبه، پنجشنبه است. روز جمعه نه زوج است و نه فرد و تردد ماشینها برای این روز آزاد است.
- در این سوال ماهها ۳۰ روزه هستند و سال کبیسه نداریم.
- توجه کنید پول داخل حساب هیچ ارتباطی با مبالغ جریمه شده ندارد.
ورودی
در هر سطر از ورودی یکی از درخواستها که در متن سوال آمده است را دریافت میکنید. تعداد درخواستها حداکثر ۳۰۰ است.
بعد از آخرین درخواست برای نشان دادن پایان درخواستها کلمه END
چاپ میشود.
تضمین میشود تمام TIMESTAMP
ها قابل قبول و متمایز و به ترتیب زمان صعودی باشد.
خروجی
در هر سطر از خروجی پاسخ دستوری را که در ورودی دریافت کردهاید چاپ میکنید.
مثالها
ورودی نمونه ۱
خروجی نمونه ۱
ورودی نمونه ۲
خروجی نمونه ۲
ارسال پاسخ برای این سؤال