+ محدودیت زمان: ۲ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
---
*مصطفی* عاشق مطالعهی کتاب است. او هفتهای حداقل یک جلد کتاب میخواند. از آنجایی که او کتابهای زیادی را بهصورت همزمان مطالعه میکند، گاهی اوقات فراموش میکند که هر کتاب را دقیقاً تا کجا خوانده است. *مصطفی* از زمانی که با [کوئرا کالج](https://quera.org/college/) آشنا شده، به سیستم گذراندن فصلهای دورههای کوئرا کالج علاقهمند شده است و دوست دارد چنین سیستمی را برای مطالعهی کتابهایش پیادهسازی کند. از آنجایی که *مصطفی* دائماً مشغول مطالعه است، از شما خواسته تا این سیستم را برایش پیادهسازی کنید.
در کوئرا کالج، هر دوره شامل چندین فصل است. هر فصل یک درصد موردنیاز برای اتمام دارد. اگر درصد مطالعهی فصل بزرگتر یا مساوی این درصد شود، به این معناست که فصل تکمیل شده است. همچنین هر فصل میتواند به یک یا چند فصل دیگر وابسته باشد. در اینصورت، برای مطالعهی یک فصل باید حتماً فصلهای پیشنیاز آن را تکمیل کرد.
طبق توضیحات فوق، دستورات زیر باید در برنامه پیادهسازی شوند:
## افزودن فصل جدید
```
add_chapter book_name chapter_name required_percent
```
این دستور، فصلی با نام `chapter_name` را به کتابی با نام `book_name` با درصد موردنیاز `required_percent` اضافه میکند. در صورتی که فصلی با این نام در این کتاب موجود بود، درصد موردنیاز آن را بهروزرسانی کنید.
**تضمین میشود** که نام کتاب و نام فصل شامل *whitespace* نیستند.
## افزودن فصل پیشنیاز
```
add_prerequisite_chapter book_name chapter_name prerequisite_chapter_name
```
این دستور، فصلی با نام `prerequisite_chapter_name` را به پیشنیازهای فصل `chapter_name` از کتاب `book_name` اضافه میکند. اگر حداقل یکی از شروط زیر برقرار باشد، هیچ اتفاقی نباید بیفتد:
+ کتابی با نام `book_name` موجود نباشد
+ فصلی با نام `chapter_name` یا `prerequisite_chapter_name` در کتاب `book_name` موجود نباشد
+ فصل `chapter_name` از قبل پیشنیاز مستقیم یا غیرمستقیم فصل `prerequisite_chapter_name` باشد
## حذف فصل پیشنیاز
```
remove_prerequisite_chapter book_name chapter_name prerequisite_chapter_name
```
این دستور، فصلی با نام `prerequisite_chapter_name` را در صورتی از پیشنیازهای فصلی با نام `chapter_name` از کتاب `book_name` حذف میکند که پیشنیاز مستقیمش باشد. اگر حداقل یکی از شروط زیر برقرار باشد، هیچ اتفاقی نباید بیفتد:
+ کتابی با نام `book_name` وجود نداشته باشد
+ فصلی با نام `chapter_name` یا `prerequisite_chapter_name` در کتاب `book_name` موجود نباشد
## مطالعهی یک فصل
```
read book_name chapter_name percent
```
دستور فوق، مشخص میکند که `percent` درصد از فصلی با نام `chapter_name` از کتابی با نام `book_name` مطالعه شده است. **تضمین میشود** که مقدار `percent` یک عدد صحیح عضو بازهی $[1,100]$ است. اگر فصل موردنظر قبلاً به اندازهی بیشتری مطالعه شده بود، نباید تغییری صورت گیرد. اگر حداقل یکی از شروط زیر برقرار باشد، هیچ اتفاقی نباید بیفتد:
+ کتابی با نام `book_name` وجود نداشته باشد
+ فصلی با نام `chapter_name` در کتاب `book_name` موجود نباشد
+ فصلهای پیشنیاز فصل `chapter_name` (در صورت وجود) تکمیل نشده باشند
## دریافت وضعیت مطالعهی یک کتاب
```
stats book_name
```
این دستور، تعداد فصلهای مطالعهشده و تعداد کل فصلهای یک کتاب را با فرمت زیر چاپ میکند:
```
<mark title="تعداد فصلهای تکمیلشده">completed_chapters_count</mark> of <mark title="تعداد کل فصلها">all_chapters_count</mark>
```
اگر کتابی با نام `book_name` موجود نبود، هیچ اتفاقی نباید بیفتد.
## خروج از برنامه
```
end
```
با اجرای این دستور، اجرای برنامه خاتمه مییابد.
# ورودی
ورودی شامل چندین خط است که در هر خط یکی از دستوراتی که گفته شد، وارد میشود.
همچنین در خط آخر ورودی، دستور `end` وارد میشود.
تعداد دستورات ورودی حداکثر ۲۰۰۰ تا است.
# خروجی
پس از اجرای دستورات، خروجی دستورات `stats` را چاپ کنید. خروجی هر دستور را در یک خط مجزا چاپ کنید.
# مثال
## ورودی نمونه ۱
```
add_chapter CLRS Introduction 90
stats CLRS
read CLRS Introduction 90
stats CLRS
end
````
## خروجی نمونه ۱
```
0 of 1
1 of 1
````
## ورودی نمونه ۲
```
add_chapter DesignPatterns Intro 100
read NotAvailable Intro 100
read DesignPatterns NotAvailable 100
stats DesignPatterns
add_chapter DesignPatterns CreationalDesignPatterns 80
add_prerequisite_chapter DesignPatterns CreationalDesignPatterns Intro
read DesignPatterns CreationalDesignPatterns 85
stats DesignPatterns
read DesignPatterns Intro 99
stats DesignPatterns
read DesignPatterns Intro 100
stats DesignPatterns
read DesignPatterns CreationalDesignPatterns 85
stats DesignPatterns
end
````
## خروجی نمونه ۲
```
0 of 1
0 of 2
0 of 2
1 of 2
2 of 2
````
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.