- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
میخواهیم دستگاه خودپردازی را شبیهسازی کنیم که عملیات مختلف را پیشتیبانی میکند. توضیحات هر عملیات در قسمت مربوطه آمده است.
ثبتنام (REGISTER
)
REGISTER
)فرمت ورودی
توضیحات
یک یوزر با نام USERNAME
در زمان TIMESTAMP
در خودپرداز ثبتنام میکند.
خروجی
- در صورتی که در زمان ثبتنام، یوزری با نام
USERNAME
ثبتنام کرده باشد، پیغامDuplicate User!
چاپ شود. - در غیر این صورت، پیغام
Registered Successfully
چاپ شود.
واریز به حساب (DEPOSIT
)
DEPOSIT
)فرمت ورودی
توضیحات
مقدار AMOUNT
واحد پول در زمان TIMESTAMP
به حساب یوزر با نام USERNAME
اضافه میگردد.
خروجی
- در صورتی که در زمان افزایش موجودی، یوزری با نام
USERNAME
وجود نداشت، پیغامNo Such User Found!
چاپ شود. - در غیر این صورت، موجودی حساب یوزر با نام
USERNAME
پس از افزایش موجودی چاپ شود.
برداشت از حساب (WITHDRAW
)
WITHDRAW
)فرمت ورودی
توضیحات
مقدار AMOUNT
واحد پول در زمان TIMESTAMP
از حساب یوزر با نام USERNAME
کم میگردد و به ازای آن، به اندازهی AMOUNT
واحد پول، از اسکناسهای داخل خودپرداز کم میشود.
خروجی
- در صورتی که در زمان برداشت از حساب، یوزری با نام
USERNAME
وجود نداشت، پیغامNo Such User Found!
چاپ شود. - در صورتی که مقدار
AMOUNT
بیش از ۲۰۰ واحد پول بود، پیغامMaximum Amount Exceeded!
چاپ شود. - در صورتی که در زمان برداشت از حساب، موجودی حساب با نام
USERNAME
کمتر از مقدارAMOUNT
بود، پیغامNot Enough Fund!
چاپ شود. - در صورتی که با اسکناسهای داخل دستگاه نمیتوانستیم مقدار خواسته شده را پرداخت کنیم، پیغام
Not Enough Banknotes!
چاپ شود. - در غیر این صورت، موجودی حساب یوزر با نام
USERNAME
پس از برداشت از حساب چاپ شود.
انتقال موجودی (TRANSFER
)
TRANSFER
)فرمت ورودی
توضیحات
مقدار AMOUNT
واحد پول در زمان TIMESTAMP
از حساب یوزر با نام SENDER_USERNAME
کم میگردد و دقیقاً یک ساعت پس از آن به حساب یوزر با نام RECEIVER_USERNAME
واریز میگردد.
خروجی
- در صورتی که در زمان
TIMESTAMP
، یوزری با نامSENDER_USERNAME
و یا همچنین یوزری با نامRECEIVER_USERNAME
وجود نداشت، پیغامNo Such User Found!
چاپ شود. - در صورتی که مقدار
AMOUNT
بیش از ۳۰۰۰ واحد پول بود، پیغامMaximum Amount Exceeded!
چاپ شود. - در صورتی که موجودی یوزر حساب با نام
SENDER_USERNAME
کمتر ازAMOUNT
واحد پول بود، پیغامNot Enough Fund!
چاپ شود. - در غیر این صورت، موجودی حساب یوزر با نام
SENDER_USERNAME
پس از انتقال موجودی چاپ شود.
استعلام موجودی (GET_BALANCE
)
GET_BALANCE
)فرمت ورودی
توضیحات
در زمان TIMESTAMP
، موجودی حساب یوزر با نام USERNAME
را چاپ میکند و مقدار ۱۰ واحد پول از آن حساب کم میکند.
خروجی
- در صورتی که در زمان
TIMESTAMP
، یوزری با نامUSERNAME
وجود نداشت، پیغامNo Such User Found!
چاپ شود. - در صورتی که موجودی حساب یوزر با نام
USERNAME
در هنگام اجرای عملیات کمتر از ۱۰ واحد پول بود، پیغامNot Enough Fund!
چاپ شود. - در غیر این صورت، موجودی حساب یوزر با نام
USERNAME
پس از کم شدن ۱۰ واحد پول چاپ شود.
افزودن اسکناس (ADD_BANKNOTE
)
ADD_BANKNOTE
)فرمت ورودی
توضیحات
در زمان TIMESTAMP
، به تعداد AMOUNT
اسکناس، هر یک به ارزش VALUE
به اسکناسهای داخل خودپرداز اضافه میگردد.
تضمین میشود مقدار VALUE
یکی از مقادیر ۱، ۵، ۱۰، ۵۰ و یا ۱۰۰ است.
خروجی
- پس از افزودن اسکناسها، مجموع کل دارایی خودپرداز (مجموع اسکناسهای درون آن) چاپ شود.
نکات
- هر یوزر پس از ثبتنام، موجودی اولیهی حسابش مقدار ۱۰۰ واحد پول است.
- در دستور
DEPOSIT
، چیزی به اسکناسهای داخل دستگاه اضافه نمیشود. - در دستور
WITHDRAW
، دستگاه خودپرداز در صورت پرداخت اسکناس، کمترین تعداد اسکناس را تحویل میدهد. - در ابتدا در دستگاه خودپرداز، از هر یک از اسکناسهای به ارزش ۱، ۵، ۱۰، ۵۰ و ۱۰۰، به تعداد ۱۰ عدد داریم.
- تضمین میشود فرمت تمامی
TIMESTAMP
ها به شکلYYYY/MM/DD-hh:mm:ss
است که در آنYYYY
،MM
،DD
،hh
،mm
وss
به ترتیب نشاندهندهی سال، ماه، روز، ساعت، دقیقه و ثانیهی عملیات است. همچنین تمامیTIMESTAMP
ها مقداری معتبر دارند. - تمامی
USERNAME
ها، تنها شامل حروف کوچک انگلیسی و به طول حداکثر ۱۰ هستند. - در هر بخش، در صورتی که بیش از یک خطا رخ دهد، اولین خطا را به عنوان خروجی در نظر بگیرید.
- دستورات به ترتیب TIMESTAMPها اجرا میشوند.
زیرمسئلهها
محدودیتها | نمره |
---|---|
در دستورات داده شده، تنها دستور REGISTER و DEPOSIT موجود است و همچنین، ترتیب TIMESTAMP ها در دستورات به صورت صعودی است (دستورات به ترتیب ورودی اجرا میشوند). |
۳۰ |
دستور WITHDRAW و ADD_BANKNOTE در لیست دستورات وجود ندارد. |
۹۰ |
دستور TRANSFER در لیست دستورات وجود ندارد. |
۹۰ |
بدون محدودیت | ۹۰ |
ورودی
ورودی شامل حداکثر ۲۰۰ خط است. در خط اول، عدد آمده است که نشاندهندهی تعداد دستورات داده شده است. سپس در خط بعدی، در هر خط، یکی از دستورات معتبر آمده است.
تضمین میشود فرمت ورودی دستورات، مانند فرمت گفته شده است و همچنین هیچ دو عملیاتی TIMESTAMP
یکسان ندارند. (از جمله واریز به حساب در عملیات TRANSFER
)
خروجی
به ازای هر دستور داده شده در ورودی، خروجی مناسب به آن را به ترتیب و در یک خط جداگانه چاپ کنید.
مثال
ورودی نمونه ۱
خروجی نمونه ۱
ورودی نمونه ۲
خروجی نمونه ۲
ورودی نمونه ۳
خروجی نمونه ۳
ورودی نمونه ۴
خروجی نمونه ۴
ورودی نمونه ۵
خروجی نمونه ۵
ارسال پاسخ برای این سؤال