मान लीजिए कि हमारे पास n तत्वों और एक संख्या k के साथ एक सरणी A है। एक कक्षा में n विद्यार्थी हैं। Ith छात्र की रेटिंग A[i] है। हमें k छात्रों के साथ एक टीम बनानी है ताकि टीम के सभी सदस्यों की रेटिंग अलग हो। यदि संभव न हो तो "असंभव" लौटाएं, अन्यथा सूचकांकों का क्रम लौटाएं।
तो, अगर इनपुट ए =[15, 13, 15, 15, 12] जैसा है; k =3, तो आउटपुट [1, 2, 5] होगा।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
दो बड़े सरणी ऐप और उत्तर को परिभाषित करें और उन्हें cnt से भरें:=0n:=प्रारंभ करने के लिए ए का आकार i:=1, जब मैं <=n, अद्यतन (i से 1 तक बढ़ाएं), करें:ए:=ए [ i - 1] यदि ऐप [ए] शून्य है, तो:(एप्लिकेशन [ए] 1 से बढ़ाएं) 1 से सीएनटी बढ़ाएं; ans[cnt] :=iif cnt>=k, तब:इनिशियलाइज़ i :=1 के लिए, जब i <=k, अपडेट (i 1 से बढ़ाएँ), करें:प्रिंट करें ans[i]अन्यथा "Impossible"
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#includeनेमस्पेस std का उपयोग करना; शून्य हल (वेक्टर A, int k) { int ऐप [101] ={ 0 }, ans [101] ={ 0 }, cnt =0; इंट एन =ए आकार (); के लिए (int i =1; i <=n; i++) { int a =A[i - 1]; अगर (! ऐप [ए]) {ऐप [ए] ++; उत्तर [++ सीएनटी] =मैं; } } अगर (cnt>=k) { के लिए (int i =1; i <=k; i++) cout < ए ={15, 13, 15, 15, 12}; इंट के =3; हल करें (ए, के);}
इनपुट
{ 15, 13, 15, 15, 12 }, 3
आउटपुट
1, 2, 5,