मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। छात्रों के n समूह थे। एक समूह या तो एक व्यक्ति होता है जो किसी और के साथ कोड लिख सकता है, या दो लोग जो एक ही टीम में कोड लिखना चाहते हैं। लेकिन मेंटर ने ठीक तीन लोगों की टीम बनाने का फैसला किया। हमें अधिकतम तीन लोगों की टीम ढूंढनी होगी जो मेंटर बना सकता है। दो के समूहों के लिए, या तो दोनों विद्यार्थियों को कूट लिखना चाहिए, या दोनों को नहीं लिखना चाहिए। अगर दो के समूह से दो छात्र कोड लिखेंगे, तो उन्हें एक ही टीम में होना चाहिए।
इसलिए, यदि इनपुट ए =[2, 2, 2, 1, 1, 1] जैसा है, तो आउटपुट 3 होगा, क्योंकि मेंटर टीम बना सकता है जैसे:[दो लोगों का पहला समूह और सातवां समूह एक व्यक्ति का], [दो लोगों का दूसरा समूह और एक व्यक्ति का छठा समूह], [दो लोगों का तीसरा समूह और एक व्यक्ति का चौथा समूह]।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
p := 0 q := 0 x := size of A for initialize i := 0, when i < x, update (increase i by 1), do: a := A[i] if a is same as 1, then: p := p + 1 Otherwise q := q + 1 if p > q, then: return q + (p - q) otherwise when p < q, then: return p Otherwise return p
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A){ int p = 0, q = 0; int x = A.size(); for (int i = 0; i < x; i++){ int a = A[i]; if (a == 1){ p = p + 1; } else{ q = q + 1; } } if (p > q){ return q + (p - q) / 3; } else if (p < q){ return p; } else{ return p; } } int main(){ vector<int> A = { 2, 2, 2, 1, 1, 1, 1 }; cout << solve(A) << endl; }
इनपुट
{ 2, 2, 2, 1, 1, 1, 1 }
आउटपुट
3