কনসেপ্ট
দেয়া তিনটি সোর্টেড অ্যারে A, B, এবং C (যাদের আকার সমান নাও হতে পারে)ოვগে, যেকোনো ট্রিপলেট A[i], B[j], C[k]-এর মধ্যে সর্বাধিক ও ন্যূনতম সংখ্যার পার্থক্য ন্যূনতম করতে হবে। অর্থাৎ (max(A[i], B[j], C[k]) - min(A[i], B[j], C[k]))-কে মিনিমাইজ করতে হবে।
ইনপুট:
A : [ 2, 5, 6, 9, 11 ] B : [ 7, 10, 16 ] C : [ 3, 4, 7, 7 ]
আউটপুট:
1
ব্যাখ্যা
যখন আমরা A[i] = 6, B[j] = 7, C[k] = 7 নির্বাচন করি, তখন ন্যূনতম পার্থক্য পাওয়া যায়: max(6,7,7) - min(6,7,7) = |7-6| = 1
ইনপুট:
A = [ 6, 9, 11, 16 ] B = [ 7, 10, 16, 79, 90 ] C = [ 3, 4, 7, 7, 9, 9, 11 ]
আউটপুট:
1
ব্যাখ্যা:
যখন আমরা A[i] = 11, B[j] = 10, C[k] = 11 নির্বাচন করি, তখন ন্যূনতম পার্থক্য পাওয়া যায়: max(11,10,11) - min(11,10,11) = |11-10| = 1
পদ্ধতি
প্রতিটি অ্যারে A, B ও C-র সর্বোচ্চ উপাদান থেকে শুরু করুন। প্রতিটি ধাপে উত্তর আপডেট করার জন্য একটি ভেরিয়েবল ট্র্যাক করুন।
প্রতিটি ধাপে, পার্থক্য কমানোর একমাত্র সম্ভাব্য উপায় হল তিনটি উপাদানের মধ্যে সর্বাধিক উপাদানটি কমানো।
সুতরাং, এই ধাপে সর্বাধিক উপাদানটি যে অ্যারেতে আছে, সেরে পরবর্তী সর্বোচ্চ উপাদানটি দেখুন এবং উত্তর ভেরিয়েবলটি আপডেট করুন।
এই ধাপটি повтор করুন যতক্ষণ না সর্বাধিক উপাদান ধারণকারী অ্যারেটি সমাপ্ত হয়।
উদাহরণ (C++)
// উপরের পদ্ধতির জন্য সি++ কোড
#include<bits/stdc++.h> usingnamespacestd; intsolve(intA1[], intB1[], intC1[], inti1, intj1, intk1) { intmin_diff, current_diff, max_term; // calculating min difference from last // index of lists min_diff = abs(max(A1[i1], max(B1[j1], C1[k1])) - min(A1[i1], min(B1[j1], C1[k1]))); while(i1 != -1 && j1 != -1 && k1 != -1) { current_diff = abs(max(A1[i1], max(B1[j1], C1[k1])) - min(A1[i1], min(B1[j1], C1[k1]))); // checking condition if(current_diff < min_diff) min_diff = current_diff; // calculating max term from list max_term = max(A1[i1], max(B1[j1], C1[k1])); if(A1[i1] == max_term) i1 -= 1; elseif(B1[j1] == max_term) j1 -= 1; else k1 -= 1; } returnmin_diff; } intmain() { intD1[] = { 5, 8, 10, 15 }; intE1[] = { 6, 9, 15, 78, 89 }; intF1[] = { 2, 3, 6, 6, 8, 8, 10 }; intnD = sizeof(D1) / sizeof(D1[0]); intnE = sizeof(E1) / sizeof(E1[0]); intnF = sizeof(F1) / sizeof(F1[0]); cout << solve(D1, E1, F1, nD-1, nE-1, nF-1); return0; }
আউটপুট
1