আমাদের দুটি অ্যারে Arr1[] ও Arr2[] দেওয়া আছে। Arr1[] অ্যাসেন্ডিং অর্ডারে সর্টেড কিন্তু একটি এলিমেন্ট ভুল জায়গায়। Arr2[]-থেকে একটি এলিমেন্ট বেছে নিয়ে Arr1[]-এর ভুল এলিমেন্ট রিপ্লেস করলে Arr1[] সর্টেড হয়। Arr2[]-এ একাধিক অপশন থাকলে সর্বোচ্চটি বেছে নেওয়া।
ইনপুট
Arr1[]= { 1,3,5,7,2,11 }, Arr2[]= { 4,8,7,10,9 }
আউটপুট
Maximum element that can make Arr1 sorted: 10
ব্যাখ্যা: Arr2[]-এ 8,9,10 >=7 এবং <=11। সর্বোচ্চ ১০। নতুন Arr1[]: {1,3,5,7,10,11} সর্টেড।
ইনপুট
Arr1[]= { 12,5,22,17 }, Arr2[]= { 4,8,7,10,9 }
আউটপুট
No such element.
ব্যাখ্যা: Arr2[]-এ ১২ থেকে ২২ এর মধ্যে কোনো সংখ্যা নেই।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- wpos = ভুল এলিমেন্টের ইনডেক্স (arr[i] < arr[i-1])।
- maxx = Arr2[]-এর উপযুক্ত এলিমেন্টের ম্যাক্স (>= arr[wpos-1] && <= arr[wpos+1])।
- Arr1[wpos] = maxx আপডেট।
- পাওয়া না গেলে -1 রিটার্ন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int sortMax(int arr1[], int arr2[], int n1, int n2){
int wpos = -1, maxx = -1;
for(int i=0; i= arr1[wpos-1] && arr2[j] <= arr1[wpos+1])
if(arr2[j] >= maxx) maxx = arr2[j];
}
if(maxx != -1) arr1[wpos] = maxx;
return maxx;
}
int main(){
int arr1[] = { 1, 3, 7, 4, 10 };
int arr2[] = { 2, 1, 6, 8, 9 };
int len1 = sizeof(arr1)/sizeof(arr1[0]);
int len2 = sizeof(arr2)/sizeof(arr2[0]);
int res = sortMax(arr1, arr2, len1, len2);
if(res == -1) cout << "No swap possible! No such element!";
else{
cout << "Maximum in arr2[] to make arr1[] sorted:" << res;
cout << endl << "Arr1[]:";
for(int i=0; i
আউটপুট
Maximum in arr2[] to make arr1[] sorted:9 Arr1[]:1 3 7 9 10 Arr2[]:2 1 6 8 9