কম্পিউটার টিউটোরিয়াল

বাইনারি স্ট্রিং রিঅ্যারেঞ্জ করে إندেক্স রেঞ্জে সর্বোচ্চ মান পাওয়া: C/C++


শুধু ০ এবং ১ সম্বলিত একটি দেয়া স্ট্রিংয়ের জন্য, আমাদের M নন-ইন্টারসেক্টিং রেঞ্জ A, B (A ≤ B) দেওয়া আছে, আরও স্পষ্টভাবে [A1, B1], [A2, B2], ..., [AM, BM], এই ইন্টারভ্যাল দুটির যেকোনো দুটি ওভারল্যাপ করে না — ফরমালি, প্রতিটি বৈধ i, j যেখানে i!=j, অথবা Ai

একটি ভ্যালিড পারমুটেশন খুঁজে বের করার কাজ যেটি নিচের দুটি কন্ডিশন একসাথে মিট করবে −

  • সকল M দেয়া রেঞ্জের মধ্যে সংখ্যাগুলোর যোগফল সর্বোচ্চ হবে।

  • স্ট্রিংটি লেক্সিকোগ্রাফিক্যালি সর্বোচ্চ হবে। একটি স্ট্রিং 1100 লেক্সিকোগ্রাফিক্যালি 1001-এর চেয়ে বেশি।

উদাহরণ

Input
11100
3
3 4
5 5
Output
00111
প্রথমে ১গুলো পজিশন ৩ এবং ৪-এ রাখা হলো তারপর ৫-এ কারণ আর ১ নেই, তাই স্ট্রিং formó 00111।
Input
0000111
2
1 1
1 2
Output
1110000

উপরের উদাহরণে আমরা প্রথমে ১টি ১ স্ট এবং ২য় পজিশনে রাখলাম তারপর আরেকটি '১' বাকি থাকল,

তাই, আমরা স্ট্রিংটি লেক্সিকোগ্রাফিক্যালি ম্যাক্সিমাইজ করতে এটিকে ৩য় পজিশনে রাখলাম এবং তাই রিঅ্যারেঞ্জমেন্ট কমপ্লিট হয়েছে।


  1. C++-এ একটি রেঞ্জ [L, R] থেকে দুটি পূর্ণসংখ্যার সর্বোচ্চ XOR মান (Maximum XOR Value of a Pair from a Range)

  2. C++-এ বাইনারি সার্চ দিয়ে স্ট্রিং খোঁজা

  3. C++-এ কনক্যাটেনেটেড বাইনারি স্ট্রিং-এ সর্বোচ্চ liên tiếp শূন্য

  4. C/C++-এ স্ট্রিং রিভার্স করা