ধরুন আমাদের একটি সংখ্যা n এবং একটি অ্যারে আছে যাকে রাউন্ড বলে। আমাদের একটি বৃত্তাকার ট্র্যাক রয়েছে যা 1 থেকে n পর্যন্ত লেবেলযুক্ত বিভিন্ন সেক্টর নিয়ে গঠিত। এখন বিবেচনা করুন এই ট্র্যাকে একটি রেস অনুষ্ঠিত হবে, রেসটি মি বিভিন্ন রাউন্ড নিয়ে গঠিত। ith রাউন্ডটি সেক্টর রাউন্ডে শুরু হয় [i - 1] এবং শেষ হয় সেক্টর রাউন্ডে [i]। উদাহরণস্বরূপ, যদি রাউন্ড 1 সেক্টর রাউন্ডে শুরু হয়[0] এবং শেষ হয় সেক্টর রাউন্ডে[1]। তাই আমাদের সবচেয়ে বেশি পরিদর্শন করা সেক্টরগুলিকে ক্রমবর্ধমান ক্রমে বাছাই করতে হবে। (ট্র্যাক নম্বরগুলি ঘড়ির কাঁটার বিপরীত দিকে সেক্টর নম্বরের ক্রমবর্ধমান ক্রম অনুসারে)
সুতরাং, যদি ইনপুটটি n =4 রাউন্ড =[1,3,1,2] এর মত হয়, তাহলে আউটপুট হবে [1, 2]
কারণ রেসটি সেক্টর 1 থেকে শুরু হয়। পরিদর্শন করা সেক্টরগুলির ক্রম নিম্নরূপ:[1,2,3 (প্রথম রাউন্ডের শেষ), 4,1 (দ্বিতীয় রাউন্ডের শেষ), 2 (3য় রাউন্ডের শেষ)]। এখানে 1 এবং 2 সেক্টর দুটি দুবার পরিদর্শন করা হয়েছে এবং তারা সবচেয়ে বেশি পরিদর্শন করা সেক্টর। এবং সেক্টর 3 এবং 4 শুধুমাত্র একবার পরিদর্শন করা হয়।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
d :=একটি নতুন মানচিত্র
-
1 থেকে n রেঞ্জে j এর জন্য, করুন
-
d[j] :=0
-
-
d[রাউন্ডস[0]] :=1
-
আমি রেঞ্জ 1 থেকে রাউন্ডের আকার - 1 এর জন্য, করুন
-
যদি রাউন্ডস[i]> রাউন্ডস[i-1] হয়, তাহলে
-
রেঞ্জ রাউন্ডে j এর জন্য[i-1]+1 থেকে রাউন্ড[i]+1, করুন
-
d[j] :=d[j] + 1
-
-
-
অন্যথায়,
-
রেঞ্জ রাউন্ডে j এর জন্য[i-1]+1 থেকে n, করুন
-
d[j] :=d[j] + 1
-
-
1 থেকে রাউন্ডের মধ্যে j এর জন্য [i], করুন
-
d[j] :=d[j] + 1
-
-
-
-
curr :=d[রাউন্ডস[0]]
-
আউট :=[রাউন্ডস[0]]
-
1 থেকে n রেঞ্জের জন্য, করুন
-
যদি আমি রাউন্ডস[0] এর মত না হয়, তাহলে
-
যদি d[i]> curr, তাহলে
-
curr :=d[i]
-
আউট :=[i]
-
-
অন্যথায় যখন d[i] curr এর মত হয়, তখন
-
-
-
-
সাজানোর পরে ফিরে আসুন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(n, rounds):d ={} রেঞ্জে j এর জন্য(1,n+1):d[j] =0 d[rounds[0]] =1 i এর রেঞ্জে (1, len) (রাউন্ডস)):যদি রাউন্ডস[i]> রাউন্ডস[i-1]:রেঞ্জে j এর জন্য(রাউন্ডস[i-1]+1, রাউন্ডস[i]+1):d[j] +=1 অন্য:এর জন্য j রেঞ্জে (রাউন্ডস[i-1]+1, n+1):d[j] +=1 রেঞ্জে j এর জন্য(1, রাউন্ডস[i]+1):d[j] +=1 curr =d [রাউন্ডস[0]] আউট =[রাউন্ডস[0]] রেঞ্জে i এর জন্য (1, n+1):যদি i !=রাউন্ডস[0]:যদি d[i]> curr:curr =d[i] আউট =[i] elif d[i] ==curr:out =out + [i] return(sorted(out))n =4rounds =[1,3,1,2]print(solve(n, rounds))প্রে>ইনপুট
4, [1,3,1,2]আউটপুট
[1, 2]