فهرست مندرجات

JoftKon

خیکوله پس از مدت‌ها ‎$n$‎ جفت جورابش را برای شست‌وشو درون ماشین لباس‌شویی قرار داد و بعد از اینکه شسته شدند، آن‌ها را در یک ردیف به ترتیب دل‌خواهی چید تا آن‌ها را جفت کند. با توجه به تعداد زیاد جوراب‌ها، او دستگاهی خریده است که قادر است با گرفتن یک بازه‌ی متوالی از جوراب‌ها، تعداد لنگه‌های متفاوت درون این بازه را اعلام کند. دو لنگه متفاوت هستند، اگر و فقط اگر متعلق به یک جفت نباشند. لازم به ذکر است این دستگاه هم‌اکنون در بازار موجود است و با نام تجاری ‎«جفت‌کن»‎ به شکل رایگان عرضه می‌شود اما برای هربار استفاده از این دستگاه لازم است ‎۱‎ تومان شارژ شود. خیکوله فقط ‎۱۳۰۰۰‎ تومان پول دارد‎!‎ برای همین باید با حداکثر ‎۱۳۰۰۰‎ بار استفاده از این دستگاه، کل جوراب‌ها را جفت‌بندی کند.

فرض کنید جوراب‌ها در یک ردیف چیده شده‌اند و از صفر تا ‎$2n-1$‎ شماره‌گذاری شده‌اند. شما باید تابع ‎joftkon(int n)‎ را بنویسید که با گرفتن تعداد اولیه‌ی جفت جوراب‌ها ‎($n$)‎ و استفاده از تابع sock_count(int s‎, ‎int e) (که همان دستگاه مذکور است)، جفت‌های متناظر را پیدا کند. توجه کنید که شما قادر به جابه‌جایی جوراب‌ها نیستید و فقط با استفاده از تابع ‎sock_count‎ باید جفت جوراب‌های متناظر را بیابید. در انتها باید جواب خود را با صدا زدن تابع ‎answer(int pairs[])‎ ارسال کنید. بنابراین آن‌ را فقط یک‌بار در انتهای برنامه‌تان صدا بزنید. جواب شما درون آرایه‌ای است که به این تابع ارسال می‌کنید. طول این آرایه باید ‎$2n$‎ باشد و در خانه‌ی ‎$i$‎ام آن باید شماره‌‌ی لنگه‌ی متناظر با جوراب ‎$i$‎ام را نوشته باشید.

در این سوال شما در صورتی نمره می‌گیرید که هم جوراب‌ها را به درستی جفت‌بندی کرده باشید و هم تعداد دفعات صدازدن تابع ‎sock_count(int s‎, ‎int e)‎ از ‎۱۳۰۰۰‎ بار بیشتر نباشد.

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

توضیح توابع

مثال

فرض کنید کلا ‎۲‎ جفت جوراب داریم که یکی از جفت‌ها در دو خانه‌ی اول و جفت دیگر در دو خانه‌ی آخر ردیف قرار دارد. در این صورت شما با پرسیدن سوال‌های زیر، جواب‌های داده شده را می‌گیرید:

همچنین شما باید آرایه [1,0,3,2]‎ را به تابع ‎answer‎ بعنوان جواب پاس دهید.

توضیحات بسته

یک بسته از فایل‌ها در فولدر ‎joftkon‎ در اختیار شما قرار گرفته است. این بسته شامل فایل‌های ‎Makefile‎، ‎joftkon.h‎، ‎joftkon.cpp‎ و grader.o‎ به همراه دو ورودی نمونه می‌باشد. تابع ‎int joftkon(int n)‎‌ درون فایل ‎joftkon.cpp‎ تعریف شده است که شما باید آن را پیاده‌سازی کنید. یک کد ساده که صرفا نحوه کار با توابع را به شما نشان می‌دهد درون این تابع نوشته شده است (که شما باید آن را تغییر دهید). کد خود را به صورت زیر کامپایل و اجرا کنید:

ورودی

محدودیت‌ها

خروجی

خروجی این برنامه در صورتی که جواب درست با تعداد پرسش‌های مجاز به تابع ‎answer‎ داده شود Correct.‎ و در غیر اینصورت ‎Incorrect.‎ خواهد بود.

زیرمسئله‌ها