मान लीजिए हमारे पास n तत्वों की एक सरणी A है। एक कोडिंग प्रतियोगिता में, कुल n छात्र भाग लेंगे, और शुरू होने से पहले, उनमें से प्रत्येक की कुछ धनात्मक रेटिंग (पूर्णांक) है। A[i] iवें छात्र की रेटिंग दर्शाता है। प्रतियोगिता समाप्त होने के बाद, प्रत्येक छात्र कुछ धनात्मक पूर्णांक स्थिति के साथ समाप्त होगा। हम उम्मीद कर रहे हैं कि छात्र अपनी रेटिंग के अनुसार स्थान लेंगे। यदि छात्र A की रेटिंग छात्र B से सख्ती से कम है, तो A को B से सख्ती से अधिक स्थिति मिलेगी। हमें प्रतियोगिता के अंत में स्थिति ढूंढनी है।
उदाहरण के लिए, यदि इनपुट A = [3, 5, 3, 4, 5] है, तो आउटपुट [4, 1, 4, 3, 1] होगा क्योंकि दूसरा और पांचवां छात्र उच्चतम रेटिंग के साथ पहला स्थान साझा करते हैं, चौथा छात्र अगले तीसरे स्थान पर है, पहला और तीसरा छात्र अंतिम चौथे स्थान को साझा कर रहे हैं।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: d := 1 for initialize j := 0, when j < n, update (increase j by 1), do: if A[j] > A[i], then: (increase d by 1) cout << d << ", "
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#includeusing namespace std; void solve(vector A){ int n = A.size(); for (int i = 0; i < n; i++){ int d = 1; for (int j = 0; j < n; j++){ if (A[j] > A[i]) d++; } cout << d << ", "; } } int main(){ vector A = { 3, 5, 3, 4, 5 }; solve(A); }
इनपुट
{ 3, 5, 3, 4, 5 }आउटपुट
4, 1, 4, 3, 1,