هندزفری‌ها


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

مانی که عاشق گوش دادن به موسیقی است، به‌تازگی دو هندزفری خریده است. اما از آنجا که کیفیت هندزفری‌هایش خوب نیست، ممکن از هر کدام از گوشی‌هایش، آهنگ متفاوتی پخش شود.

حال او که تمام دغدغه‌اش گوش دادن به موسیقی شده، از شما می‌خواهد که به او بگویید آیا با استفاده از دو هندزفری (ممکن است یکی از هندزفری‌ها استفاده نشود)، می‌تواند یک موسیقی یکسان را از هر دو گوش خود بشنود یا خیر.

ورودی🔗

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

تضمین می‌شود هر موسیقی، با یک حرف بزرگ انگلیسی نشان داده می‌شود.

خروجی🔗

در صورتی که مانی می‌توانست با استفاده از دو هندزفری موجود، به یک موسیقی یکسان از هر دو گوش خود گوش دهد، عبارت YES و در غیر این صورت عبارت NO را چاپ نمایید.

برای آشنایی بیشتر با نحوه‌ی کار با ورودی و خروجی و نحوه‌ی داوری می‌توانید اینجا و اینجا را مطالعه کنید.

ورودی نمونه ۱🔗

A A
B B
Plain text

خروجی نمونه ۱🔗

YES
Plain text

مانی می‌تواند با انتخاب هر یک از هندزفری‌ها، به یک موسیقی گوش کند. (موسیقی A یا B)

ورودی نمونه ۲🔗

H U
I H
Plain text

خروجی نمونه ۲🔗

YES
Plain text

مانی می‌تواند با انتخاب گوشی سمت چپ (گوشی اول) از هندزفری اول و گوشی سمت راست (گوشی دوم) از هندزفری دوم، به موسیقی H گوش کند.

ورودی نمونه ۳🔗

K F
F J
Plain text

خروجی نمونه ۳🔗

YES
Plain text

مانی می‌تواند با انتخاب گوشی سمت راست (گوشی دوم) از هندزفری اول و گوشی سمت چپ (گوشی اول) از هندزفری دوم، به موسیقی F گوش کند.

ورودی نمونه ۴🔗

O R
O G
Plain text

خروجی نمونه ۴🔗

NO
Plain text

مانی به هیچ روشی نمی‌تواند به یک موسیقی یکسان از هر دو گوش، گوش دهد (دقت کنید که موسیقی O از گوش سمت چپ هر دو هندزفری در حال پخش است).

نمایشگاه مجازی


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

متاسفانه نمایشگاه کار حضوری نیست و به همین دلیل تصمیم گرفتیم که غرفه‌های این نمایشگاه را به‌صورت مجازی نمایش دهیم.

نمایشگاه کار کوئرا ۸ غرفه دارد. ساختمان این نمایشگاه به‌صورت یک راه‌رو است که در هر کدام از دو طرف آن ۴ غرفه قرار دارد.

می‌دانیم در این نمایشگاه kk شرکت، ثبت نام کرده‌اند. پس باید kkتا از این غرفه‌ها را آماده کنیم. ترتیب آماده کردن غرفه‌ها در نمونه‌ها آمده است.

ورودی🔗

در تنها سطر ورودی عدد صحیح kk آمده است که نشان‌دهنده تعداد غرفه‌ها است.

0k80 \le k \le 8

خروجی🔗

مطابق با نمونه‌های سوال نقشه نمایشگاه کار را چاپ کنید. توجه کنید باید تمام کاراکترهای شما دقیقا مطابق با الگوی مسئله باشد. همچنین باید kk غرفه اول را نشان دهید و بقیه غرفه‌ها را خالی بگذارید.

مثال🔗

ورودی نمونه ۱🔗

3
Plain text

خروجی نمونه ۱🔗

########.......########
#ghorfe1.......ghorfe2#
########.......########
#ghorfe3..............#
########.......########
#.....................#
########.......########
#.....................#
#######################
Plain text

ورودی نمونه ۲🔗

8
Plain text

خروجی نمونه ۲🔗

########.......########
#ghorfe1.......ghorfe2#
########.......########
#ghorfe3.......ghorfe4#
########.......########
#ghorfe5.......ghorfe6#
########.......########
#ghorfe7.......ghorfe8#
#######################
Plain text

حساب بی‌حساب


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

بانک مانی بسیار عجیب است، به‌طوری‌که هیچگاه به مشتریانش موجودی حسابشان را نمی‌گوید و تنها لیستی از تراکنش‌ها به آن‌ها می‌دهد. مانی که موجودی اولیه حساب خودش را فراموش کرده، به بانک می‌رود و لیست تراکنش‌های خود را دریافت می‌کند. هر تراکنش به یکی از صورت‌های زیر است:

  • به حساب مانی پول ریخته شده است، به این معنی است که در ساعت HH:MM موجودی حساب مانی xx تومان افزایش یافته است:
    DEP x HH:MM
    Plain text
  • مانی از حسابش پول دریافت کرده اما موجودی کافی نبوده است، به این معنی است که در ساعت HH:MM مانی قصد کرده xx تومان از حسابش بردارد. اما موجودی حسابش کافی نبوده و تراکنش انجام نشده است:
    WIT x HH:MM FAIL
    Plain text
  • مانی از حسابش پول دریافت کرده و موجودی کافی بوده است، به این معنی است که در ساعت HH:MM مانی xx تومان از حسابش برداشت کرده و موجودی حسابش xx تومان کاهش یافته است:
    WIT x HH:MM OK
    Plain text

به او کمک کنید حداقل موجودی اولیه‌ی حسابش را بیابد. دقت کنید همه‌ی ساعت‌های داده شده برای یک روز هستند و شما باید حداقل موجودی اولیه حساب مانی را در ابتدای روز بدست آورید.

ورودی🔗

در خط اول ورودی عدد nn آمده که نشان‌دهنده‌ی تعداد تراکنش‌ها است. 1n1001 \le n \le 100 در هر خط از nn خط بعدی یک تراکنش آمده که به صورت یکی از ۳ حالت توضیح داده شده در صورت سوال است. 1x20001 \le x \le 2000 00HH2300 \le HH \le 23 00MM5900 \le MM \le 59 توجه کنید زمان تراکنش‌ها لزوما به ترتیب نیست.

تضمین می‌شود هیچ دو تراکنشی در یک زمان انجام نمی‌گیرند.

خروجی🔗

در تنها خط خروجی حداقل موجودی اولیه حساب مانی را چاپ کنید. همچنین اگر لیست تراکنش‌های داده شده معتبر نبود عبارت DOROGHE را چاپ کنید.

مثال🔗

ورودی نمونه ۱🔗

3
DEP 100 08:57
WIT 500 18:00 FAIL
WIT 150 13:23 OK
Plain text

خروجی نمونه ۱🔗

50
Plain text

در این‌صورت می‌توان ثابت کرد مانی در ابتدا حداقل ۵۰ تومان در حسابش داشته است و موجودی اولیه‌ای کمتر از این مقدار ممکن نیست.

ورودی نمونه ۲🔗

5
DEP 100 08:57
WIT 250 18:00 OK
WIT 150 13:23 OK
DEP 1000 18:01
WIT 600 20:07 OK
Plain text

خروجی نمونه ۲🔗

300
Plain text

در این‌صورت می‌توان ثابت کرد مانی در ابتدا حداقل ۳۰۰ تومان در حسابش داشته است.

ورودی نمونه ۳🔗

8
DEP 210 00:07
WIT 170 03:23 OK
WIT 130 10:00 OK
DEP 1000 12:00
WIT 600 16:30 OK
WIT 1400 18:00 FAIL
DEP 100 19:00
WIT 800 19:45 OK
Plain text

خروجی نمونه ۳🔗

390
Plain text

در این‌صورت می‌توان ثابت کرد مانی در ابتدا حداقل ۳۹۰ تومان در حسابش داشته است.

ورودی نمونه ۴🔗

2
DEP 100 12:00
WIT 50 13:00 OK
Plain text

خروجی نمونه ۴🔗

0
Plain text

در این مثال حساب مانی می‌تواند در ابتدا خالی باشد.

ورودی نمونه ۵🔗

2
WIT 100 10:08 FAIL
DEP 200 09:00
Plain text

خروجی نمونه ۵🔗

DOROGHE
Plain text

در ساعت 09:00 ۲۰۰ تومان به حساب مانی ریخته شده است و سپس در ساعت 10:08، موجودی او برای برداشت ۱۰۰ تومان کافی نبوده که تناقض است. زیرا در ساعت 10:08 حداقل ۲۰۰ تومان در حسابش وجود داشته و ۱۰۰ تومان قابل برداشت بوده است.

صاف‌کاری


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

مانی به تازگی استخدام شده که خانه‌ای بسازد! اولین مشکل مانی برای شروع، صافی زمین زیر خانه بود. به طور دقیق‌تر زمین زیر خانه به شکل جدولی از راست نامتناهی بود که ارتفاع ستون iiام آن (از سمت چپ) hih_i است. مانند مثال زیر: (نقطه‌ها در جدول نشان‌گر ادامه‌دار و نامتناهی بودن جدول از سمت راست است،‌ برای مثال h3=5h_3=5 و h7=0h_7=0 است)

شکل نمونه

برای صاف‌کاری سطح، مانی می‌تواند از ترکیب این دو عملیات استفاده کند:

  • یک خانه خاک به یک ستون اضافه کند و aaتا هزینه دهد.
  • با بولدوزر از بالای چپ‌ترین ستون زمین شروع کرده و به سمت راست برود. اگر ارتفاع ستون بعدی از ستونی که در آن است بیشتر بود، خاک‌های آن ستون را به ستون بعدی هل بدهد و اگر ارتفاع ستون بعدی کمتر از ستون کنونی بود، متوقف شود. همچنین هزینه‌ی کل این عملیات bb واحد است. (برای توضیحات بیشتر به مثال نمونه ۱ توجه کنید.)

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

ورودی🔗

در خط اول ورودی به ترتیب nn، aa و bb داده می‌شود. 1n20001 \le n \le 2000 1a,b1091 \le a, b \le 10^9

در خط دوم ورودی nn عدد آمده که iiامین آن‌ها برابر با ارتفاع ستون iiام یا همان hih_i است. 1hi20001 \le h_i \le 2000 توجه کنید برای i>ni > n مقدار hih_i برابر با صفر است.

خروجی🔗

در تنها خط خروجی، کمینه‌ی هزینه را چاپ کنید.

مثال🔗

ورودی نمونه ۱🔗

4 7 9
2 4 3 1
Plain text

خروجی نمونه ۱🔗

9
Plain text

می‌توان با یک‌بار انجام عملیات ۲ به جواب رسید. در این مثال n=4n=4 است. توجه کنید خاک‌ها می‌توانند به خانه‌های بعد از nn ستون اول نیز برسند مرحله اول مرحله دوم مرحله سوم مرحله چهارم

ورودی نمونه ۲🔗

6 1 3
3 2 5 1 4 4
Plain text

خروجی نمونه ۲🔗

5
Plain text

مثال مربوط به شکل اول سوال است که می‌توان به ترتیب زیر عملیات‌ها را انجام داد:

  • یک خانه خاک به ستون دوم اضافه کنیم و ۱ واحد هزینه دهیم.
  • یکبار عملیات نوع ۲ را انجام دهیم و ۳ واحد هزینه دهیم.
  • یک خانه خاک به ستون هفتم اضافه کنیم و ۱ واحد هزینه دهیم.

در آخر جمع هزینه‌ها‌ی این مثال برابر با ۵=۱+۳+۱ خواهد شد.

ورودی نمونه ۳🔗

1 5 6
10
Plain text

خروجی نمونه ۳🔗

0
Plain text

در این مثال تنها یک ستون وجود دارد و زمین از همان ابتدا صاف است.

طرح ترافیک


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

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

هر ماشین، می‌تواند در روزهای زوج یا فرد (بسته به پلاکش) در محدوده طرح زوج و فرد تردد کند و هیچ هزینه‌ای لازم نیست بدهد. ولی اگه در روز غیر از زوجیت پلاکش وارد طرح شود، دو حالت دارد، یا طرح برای آن روز نخریده و جریمه می‌شود یا طرح خریده که هیچ مشکلی نیست.

با خرید یک طرح dd روزه برای یک خودرو، از فردای روزی که طرح خریداری شده است به مدت dd روز، رفت آمد در طرح مشکلی ندارد.

در این سیستم، هر نفر باید یک حساب داشته باشد که در ابتدا اعتبار حسابش صفر است و می‌تواند اعتبار این حساب را افزایش دهد و یا برای یک ماشینش یک طرح بخرد. (توجه کنید حساب‌ها برای اشخاص است، نه ماشین‌ها).

توجه کنید جریمه شدن یک شخص برای ورود به طرح، از اعتبار حساب این شخص برای خرید طرح جداست. یعنی نباید مبلغ جریمه‌ها از حساب راننده‌ها کسر شود.

درخواست‌ها🔗

درخواست REGISTER
REGISTER <USERNAME> <TIMESTAMP>
Plain text

در این درخواست یک نفر با نام <USERNAME> در لحظه <TIMESTAMP> به سیستم طرح ترافیک اضافه می‌شود.

  • <USERNAME> یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.
  • <TIMESTAMP> یک رشته به فرمت yyyy/mm/dd است که زمان این اتفاق را نشان می‌دهد. تضمین می‌شود این زمان قابل قبول است.

در صورتی این فرد با موفقیت به سیستم اضافه می‌شود که قبلاً هیچ کسی با این <USERNAME> در سیستم ثبت نام نکرده باشد.

بعد از دریافت این درخواست، در صورتی که این فرد با موفقیت به سیستم اضافه شد پیام REGISTER DONE و در غیر این صورت پیام INVALID USERNAME را چاپ کنید.

مثالی از این درخواست:

REGISTER alireza 1402/10/15
Plain text
درخواست REGISTER_CAR
REGISTER_CAR <USERNAME> <CAR_PLATE> <TIMESTAMP>
Plain text

در این درخواست یک نفر با نام <USERNAME> با شماره پلاک <CAR_PLATE> در لحظه <TIMESTAMP> به سیستم طرح ترافیک اضافه می‌کند.

  • <USERNAME> یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.
  • <CAR_PLATE> یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته می‌تواند با صفر آغاز شود.
  • <TIMESTAMP> یک رشته به فرمت yyyy/mm/dd است که زمان این اتفاق را نشان می‌دهد.

در صورت رخ دادن هر کدام از حالت‌های زیر دقیقا یکی از پیام‌های زیر را به الویت از بالا به پایین اجرا کنید:

  • در صورتی که فردی با نام <USERNAME> وجود ندارد پیام INVALID USERNAME را چاپ کنید.
  • در صورتی که این شماره پلاک (<CAR_PLATE>) برای یک خودرو دیگر ثبت شده است (حتی اگر خودرو برای همین راننده باشد) پیام INVALID CAR PLATE را چاپ کنید.
  • در صورتی که هیچ کدام از اتفاقات بالا نیفتاد پیام REGISTER CAR DONE را چاپ کنید.

مثالی از این درخواست:

REGISTER_CAR alireza 7741181522 1402/10/15
Plain text
درخواست NEW_RECORD
NEW_RECORD <CAR_PLATE> <TIMESTAMP>
Plain text

در این درخواست یک ماشین با شماره پلاک <CAR_PLATE> در لحظه <TIMESTAMP> وارد محدوده طرح ترافیک شده است.

  • <CAR_PLATE> یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته می‌تواند با صفر آغاز شود.
  • <TIMESTAMP> یک رشته به فرمت yyyy/mm/dd است که زمان این اتفاق را نشان می‌دهد.

اگر ماشینی با این شماره پلاک در سیستم ثبت نشده است پیام INVALID CAR PLATE را چاپ کنید و در غیر این صورت اگر این درخواست در روز فرد آمده ولی پلاک ماشین زوج است یا درخواست در روز زوج آمده ولی پلاک ماشین فرد است و این ماشین برای این روز طرح ندارد پیام PENALTY RECORDED را چاپ و راننده این ماشین را به اندازه ۱۰۰ جریمه کنید و در غیر این صورت پیام NORMAL RECORDED را چاپ کنید.

مثالی از این درخواست:

NEW_RECORD 7741181522 1402/10/15
Plain text
درخواست BUY_LICENSE
BUY_LICENSE <USERNAME> <CAR_PLATE> <LENGTH> <TIMESTAMP>
Plain text

در این درخواست یک نفر با نام <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 را چاپ کنید.

توجه کنید خرید طرح ترافیک برای یک خودرو در روز ddام به مدت kk روز یعنی این راننده می‌تواند در روزهای d+1,d+2,d+3,,d+kd + 1, d + 2, d + 3, \dots, d + k در محدوده طرح ترافیک تردد کند.

همچنین توجه کنید اگر یک راننده قبلاً طرحی برای ماشین خود برای این روزها خریده باشد به روزهای این طرح اضافه نمی‌شود بلکه برای یک روز دو طرح دارد.

مثالی از این درخواست:

BUY_LICENSE alireza 7741181522 13 1402/10/15
Plain text
درخواست ADD_BALANCE
ADD_BALANCE <USERNAME> <AMOUNT> <TIMESTAMP>
Plain text

در این درخواست فردی با نام <USERNAME> اعتبار حساب خود در این سامانه را به اندازه <AMOUNT> در لحظه <TIMESTAMP> افزایش می‌دهد.

  • <USERNAME> یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.
  • <AMOUNT> یک عدد طبیعی کوچک‌تر یا مساوی ۱۰۰۰ است.
  • <TIMESTAMP> یک رشته به فرمت yyyy/mm/dd است که زمان این اتفاق را نشان می‌دهد.

اگر شخصی با نام <USERNAME> در این سامانه وجود ندارد پیام INVALID USERNAME و در غیر این صورت پیام ADD BALANCE DONE را چاپ کنید.

مثالی از این درخواست در ورودی:

ADD_BALANCE alireza 850 1402/10/15
Plain text
درخواست GET_BALANCE
GET_BALANCE <USERNAME> <TIMESTAMP>
Plain text

در این درخواست فردی با نام <USERNAME> اعتبار حساب خود در این سامانه را در لحظه <TIMESTAMP> می‌پرسد.

  • <USERNAME> یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.
  • <TIMESTAMP> یک رشته به فرمت yyyy/mm/dd است که زمان این اتفاق را نشان می‌دهد.

مثالی از این درخواست:

GET_BALANCE alireza 1402/10/15
Plain text

اگر شخصی با نام <USERNAME> در این سامانه وجود ندارد پیام INVALID USERNAME و در غیر این صورت مقدار اعتبار حساب این شخص را چاپ کنید.

درخواست GET_PENALTY
GET_PENALTY <USERNAME> <TIMESTAMP>
Plain text

در این درخواست مقدار جریمه‌های <USERNAME> در لحظه <TIMESTAMP> را چاپ کنید.

  • <USERNAME> یک رشته به طول حداقل ۱ و حداکثر ۲۰ از حروف کوچک و بزرگ انگلیسی و ارقام است.
  • <TIMESTAMP> یک رشته به فرمت yyyy/mm/dd است که زمان این اتفاق را نشان می‌دهد.

اگر شخصی با نام <USERNAME> در این سامانه وجود ندارد پیام INVALID USERNAME و در غیر این صورت مقدار جریمه‌ی این شخص را چاپ کنید.

مثالی از این درخواست:

GET_PENALTY alireza 1402/10/15
Plain text
درخواست GET_LICENSE_DEADLINE
GET_LICENSE_DEADLINE <CAR_PLATE> <TIMESTAMP>
Plain text

در این درخواست اولین روز بعد از <TIMESTAMP> که ماشین با پلاک <CAR_PLATE> طرح ندارد را چاپ کنید. (این موضوع ربطی به زوج و فرد بودن پلاک ندارد.)

  • <CAR_PLATE> یک رشته به طول دقیقاً ۱۰ از ارقام است. این رشته می‌تواند با صفر آغاز شود.
  • <TIMESTAMP> یک رشته به فرمت yyyy/mm/dd است که زمان این اتفاق را نشان می‌دهد.

اگر ماشینی با این شماره پلاک در سیستم ثبت نشده است پیام INVALID CAR PLATE را چاپ کنید در غیر این صورت اولین روزی که بعد از روز<TIMESTAMP> این ماشین طرح ندارد را به صورت yyyy/mm/dd چاپ کنید.

توجه کنید اگر این ماشین تاکنون طرح نداشته است باید فردای <TIMESTAMP> را چاپ کنید.

مثالی از این درخواست:

GET_LICENSE_DEADLINE 7741181522 1402/10/15
Plain text

نکات🔗

  • این سامانه برای سال ۱۴۰۰ به بعد طراحی شده است یعنی تمام زمان‌های داده شده در سال ۱۴۰۰ یا بعد از آن است. همچنین می‌دانیم ۱۴۰۰/۰۱/۰۱ شنبه است.
  • منظور از روز‌های زوج، شنبه، دوشنبه و چهارشنبه و منظور از روزهای فرد، یک‌شنبه، سه‌شنبه، پنج‌شنبه است. روز جمعه نه زوج است و نه فرد و تردد ماشین‌ها برای این روز آزاد است.
  • در این سوال ماه‌ها ۳۰ روزه هستند و سال کبیسه نداریم.
  • توجه کنید پول داخل حساب هیچ ارتباطی با مبالغ جریمه شده ندارد.

ورودی🔗

در هر سطر از ورودی یکی از درخواست‌ها که در متن سوال آمده است را دریافت می‌کنید. تعداد درخواست‌ها حداکثر ۳۰۰ است.

بعد از آخرین درخواست برای نشان دادن پایان درخواست‌ها کلمه END چاپ می‌شود.

تضمین می‌شود تمام TIMESTAMPها قابل قبول و متمایز و به ترتیب زمان صعودی باشد.

خروجی🔗

در هر سطر از خروجی پاسخ دستوری را که در ورودی دریافت کرده‌اید چاپ می‌کنید.

مثال🔗

ورودی نمونه ۱🔗

REGISTER amin 1400/01/01
REGISTER ali 1400/01/07
REGISTER amin 1400/01/18
REGISTER_CAR amin 7124862189 1400/01/21
REGISTER_CAR amin 2564518722 1400/01/23
REGISTER_CAR amin 5654121543 1400/01/24
NEW_RECORD 7124862189 1400/01/27
NEW_RECORD 7124862189 1400/01/28
NEW_RECORD 7124862189 1400/01/29
GET_PENALTY amin 1400/02/04
GET_BALANCE amin 1400/02/05
ADD_BALANCE amin 150 1400/02/06
GET_PENALTY amin 1400/02/07
GET_BALANCE amin 1400/02/08
GET_LICENSE_DEADLINE 2564518722 1400/02/09
END
Plain text

خروجی نمونه ۱🔗

REGISTER DONE
REGISTER DONE
INVALID USERNAME
REGISTER CAR DONE
REGISTER CAR DONE
REGISTER CAR DONE
NORMAL RECORDED
NORMAL RECORDED
PENALTY RECORDED
100
0
ADD BALANCE DONE
100
150
1400/02/10
Plain text

ورودی نمونه ۲🔗

REGISTER amin 1400/01/02
REGISTER ali 1400/01/07
REGISTER amin 1400/01/08
REGISTER_CAR amin 7124862189 1400/01/09
REGISTER_CAR amin 2564518722 1400/01/10
REGISTER_CAR amin 5654121543 1400/01/14
ADD_BALANCE amin 350 1400/01/19
GET_BALANCE amin 1400/01/20
BUY_LICENSE amin 2564518722 3 1400/01/22
GET_LICENSE_DEADLINE 2564518722 1400/02/03
GET_BALANCE amin 1400/01/24
NEW_RECORD 2564518722 1400/01/27
NEW_RECORD 2564518722 1400/01/28
NEW_RECORD 2564518722 1400/01/29
GET_PENALTY amin 1400/02/04
GET_BALANCE amin 1400/02/08
END
Plain text

خروجی نمونه ۲🔗

REGISTER DONE
REGISTER DONE
INVALID USERNAME
REGISTER CAR DONE
REGISTER CAR DONE
REGISTER CAR DONE
ADD BALANCE DONE
350
BUY LICENSE DONE
1400/02/04
140
PENALTY RECORDED
NORMAL RECORDED
NORMAL RECORDED
100
140
Plain text

کیبورد بهینه


  • محدودیت زمان: ۳.۵ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

مانی که به تازگی تایپ ده‌انگشتی یاد گرفته است، سخت به دنبال این است که سرعت تایپ خودش را بالا ببرد! اما از آنجا که مانی همیشه می‌خواهد خاص باشد، تصمیم گرفت که به جای اینکه تمرین بیشتری کند، ساختار کیبورد خود را عوض کند!

کیبورد مانی به شکل یک جدول 3×103 \times 10 است که ستون‌های آن از چپ به راست و همچنین سطرهای آن از بالا به پایین شماره‌گذاری شده‌اند. همچنین او nn کلمه در لیست تمرین خود دارد که قصد تایپ کردنشان را دارد. برای این کار، او می‌خواهد که ۳۰ کلیدی که بر روی کیبورد خود قرار دارد را در این جدول طوری بچیند که بیشترین سرعت تایپ را کسب کند.

مانی که برای اینکار، نیاز به معیاری برای مقایسه‌ی بین کیبوردها داشت، تصمیم گرفت که به هر چینش از کلیدها، عددی را نسبت دهد. او ابتدا برای هر کلمه، امتیازی در نظر گرفت که آن را به صورت زیر تعریف کرد:

برای هر کلمه‌ی به شکل s1s2...sks_{1}s_{2}...s_{k} که در آن sis_{i} نشان‌دهنده‌ی حرف iiاُم در آن است، امتیاز آن کلمه برابر با مقدار زیر است: i=1k1difference(si,si+1)\sum_{i=1}^{k-1}difference\left(s_{i},\,s_{i+1}\right) که در آن، تابع differencedifference، اختلاف شماره ستون دو حرف ورودی را بر می‌گرداند.

همچنین، او برای یک ترتیب از قرارگیری کلیدها در کیبورد نیز یک عدد در نظر می‌گیرد و آن را امتیاز کیبورد می‌نامد. این عدد برابر است با مجموع امتیاز nn کلمه‌ی موجود در لیست تمرین.

مانی که تصمیم داشت کیبورد با بیشترین امتیاز را به دست آورد، از شما می‌خواهد که برای او، کیبوردی با بیشینه امتیاز را پیدا کنید. اما از آنجا که مانی می‌داند سؤال به اندازه‌ی کافی سخت است، تصمیم گرفت که در ازای پیدا کردن کیبوردی با امتیاز بیشتر، نمره‌ی بیشتری به شما دهد! (در نتیجه در این سؤال به دنبال پیدا کردن کیبورد با بیشترین امتیاز نیستیم و هر چقدر راه‌حل شما، کیبورد با امتیاز بیشتری پیدا کند، امتیاز بیشتری از این سؤال دریافت خواهید کرد)

ورودی🔗

در خط اول ورودی عدد طبیعی nn آمده است و در nn خط بعدی و در هر خط یک کلمه آمده است که نشان‌دهنده‌ی کلمه‌های موجود در لیست تمرین مانی است. 1n5 0001 \le n \le 5\ 000

تضمین می‌شود طول هر کلمه از ۱۰ بیشتر نیست و همچنین تمام کلمه‌ها، تنها شامل حروف کوچک انگلیسی و ارقام ۱ تا ۴ هستند.

خروجی🔗

در خط اول خروجی، ابتدا بیشترین امتیاز کیبورد را چاپ کنید و سپس در سه خط بعدی و در هر خط، ۱۰ کارکتر که با فاصله از هم جدا شده‌اند چاپ کنید. این کارکترها نشان‌دهنده‌ی کلیدهای کیبورد می‌باشند (برای درک بهتر نحوه‌ی خروجی دادن، خروجی‌های نمونه را مشاهده کنید).

در کیبورد خروجی، تمام حروف کوچک انگلیسی و همچنین ارقام ۱ تا ۴، باید دقیقاً یکبار ظاهر شوند.

ورودی نمونه ۱🔗

2
ab
t2
Plain text

خروجی نمونه ۱🔗

18
t o 3 x r j z h n a 
b 1 f 4 w i k u y 2 
d m p q c s l e g v 
Plain text

اختلاف شماره‌ی ستون دو کاراکتر aa و bb و همچنین دو کاراکتر tt و 22 برابر با ۹ است و در نتیجه پاسخ برابر با ۱۸ است. (توجه کنید که کیبورد چاپ شده، تنها یکی از پاسخ‌های ممکن است)

ورودی نمونه ۲🔗

3
abc
123
f4r
Plain text

خروجی نمونه ۲🔗

51
2 r z t m l s g 3 c
b i w q x p n y 1 a
f e k h o j d v u 4
Plain text