মান লিখুন: আমাদের কাছে n উপাদান বিশিষ্ট একটি অ্যারে A রয়েছে। A[i] নির্দেশ করে i-তম শিক্ষার্থীর প্রোগ্রামিং দক্ষতা। A-র সব উপাদান আলাদা। আমরা তাদের টিমে ভাগ করতে চাই যাতে:
- কোনো দুজন শিক্ষার্থী i এবং j যাদের |A[i] - A[j]| = 1, তারা একই টিমে থাকবে না
- টিমের সংখ্যা ন্যূনতম হবে
উদাহরণ
যদি ইনপুট হয় A = [2, 3, 4, 99, 100], তবে আউটপুট হবে 2, কারণ গোষ্ঠীগুলো হবে [2, 3, 4] এবং [99, 100]
সমাধানের ধাপসমূহ
dem := 1
A সর্ট করুন
for i := 1 থেকে A.size()-1:
যদি A[i] - A[i-1] == 1:
dem := 2
dem রিটার্ন করুন
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
int dem = 1;
sort(A.begin(), A.end());
for (int i = 1; i < A.size(); i++)
if (A[i] - A[i - 1] == 1)
dem = 2;
return dem;
}
int main() {
vector<int> A = { 2, 3, 4, 99, 100 };
cout << solve(A) << endl;
}
ইনপুট
{ 2, 3, 4, 99, 100 }
আউটপুট
2