- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
بردیا که حسابی با آرایههای پویا و حافظه کامپیوتر آشنا شده است حالا خودش یک نوع آرایه پویا طراحی کرده و از شما میخواهد که در پیادهسازی آن به او کمک کنید.
آرایه او دو ویژگی size
و capacity
را دارد که به ترتیب نشاندهنده تعداد اعضای داخل آرایه و ظرفیت آرایه میباشند. این آرایه با توجه به این دو ویژگی دو قابلیت دارد:
- در صورت داشتن ظرفیت کافی میتواند با تابع
append
عضو جدیدی را به انتهای آرایه اضافه کند؛ در این صورتsize
آرایه یک واحد بیشتر میشود. - در صورتی که ظرفیت آرایه کافی نبود میتوان با تابع
resize
ظرفیت آن را دو برابر کرد؛ در این صورتcapacity
دو برابر میشود.
برای پیادهسازی این توابع برنامه شما باید ساختار زیر را داشته باشد:
void resize (int*& dynamicArray, int& capacity, int newCapacity) {
// Code
}
void append (int*& dynamicArray, int& size, int& capacity, int value) {
// Code
}
کدهای ارسالی شما بررسی میشوند و در صورتی که طبق خواسته سؤال پیادهسازی نشده باشند نمرهای به آنها تعلق نمیگیرد.
در خط اول ورودی capacity
اولیه آرایه وارد میشود و سپس عدد n
که تعداد اعدادی است که میخواهیم به آرایه اضافه کنیم وارد میشود. در خط بعدی n
عدد
در خط اول خروجی ابتدا باید capacity
آرایه و سپس size
آن را چاپ کنید. سپس در خط بعدی باید
اعضای آرایه چاپ شوند.
1 6
1 2 3 4 5 6
8 6
1 2 3 4 5 6
8 14
5 7 3 12 9 19 8 12 54 1 13 4 9 3
16 14
5 7 3 12 9 19 8 12 54 1 13 4 9 3