ধরুন আমরা কর্মচারীদের সময়সূচির একটি তালিকা দিয়েছি; এটি প্রতিটি কর্মচারীর কাজের সময়কে প্রতিনিধিত্ব করে। এখন ধরুন প্রতিটি কর্মচারীর অ-ওভারল্যাপিং ইন্টারভ্যালের একটি তালিকা আছে, এই ব্যবধানগুলি সাজানো হয়েছে। আমাদের সীমিত ব্যবধানের তালিকা খুঁজে বের করতে হবে যা সকল কর্মচারীদের জন্য সাধারণ, ইতিবাচক-দৈর্ঘ্যের বিনামূল্যের সময়কে প্রতিনিধিত্ব করে, এবং এটিও সাজানো ক্রমে হবে। আমরা ইন্টারভালগুলিকে [x, y] ফর্মে উপস্থাপন করছি, উদাহরণস্বরূপ, সময়সূচী [0][0].start =1, সময়সূচী[0][0].end =2।
সুতরাং, যদি ইনপুট শিডিউল =[[[1,2],[5,6]],[[1,3]],[[4,10]]] এর মত হয়, তাহলে আউটপুটের একটি হবে [[ 3,4]]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি 2D অ্যারে v
সংজ্ঞায়িত করুন -
আরম্ভ করার জন্য i :=0, যখন i <সময়সূচীর আকার, আপডেট (i 1 দ্বারা বাড়ান), করবেন
-
j শুরু করার জন্য :=0, যখন j <সময়সূচীর আকার[i], আপডেট করুন (j 1 দ্বারা বৃদ্ধি করুন), করুন
-
v
এর শেষে সময়সূচী[i, j] সন্নিবেশ করান
-
-
-
অ্যারে সাজান v
-
একটি 2D অ্যারে ret সংজ্ঞায়িত করুন
-
একটি অ্যারে তাপমাত্রা সংজ্ঞায়িত করুন :=v[0]
-
আরম্ভ করার জন্য i :=0, যখন i
-
যদি temp[0]
-
ret এর শেষে {temp[1], v[i, 0]} ঢোকান
-
temp :=v[i]
-
-
অন্যথায়
-
temp :=(যদি temp[1]
-
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#includenamespace ব্যবহার করে std;void print_vector(vector > v){ cout <<"["; for(int i =0; i a, ভেক্টর b){ ফেরত a[0] > কর্মচারী ফ্রি টাইম(ভেক্টর<ভেক্টর<ভেক্টর >> সময়সূচী) { ভেক্টর<ভেক্টর > v; (int i =0; i > ret; ভেক্টর temp =v[0]; (int i =0; i >> v ={{{1,2},{5,6}},{{1,3}},{{4,10}}}; print_vector(ob.employeeFreeTime(v));}
ইনপুট
{{{1,2},{5,6}},{{1,3}},{{4,10}}}