Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

छात्रों से अधिक वोट प्राप्त करने के लिए न्यूनतम k खोजने के लिए C++ कोड

मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। एक स्कूल में n छात्र हैं और उनमें से प्रत्येक के पास ठीक k वोट हैं और सभी वोटों का उपयोग किया जाना चाहिए। दो पार्टियां हैं। A[i] प्रतिनिधित्व करता है कि ith छात्र ने A[i] को पहली पार्टी को वोटों की राशि दी है और इसका मतलब है कि दूसरे पक्ष को k-A[i] वोटों की संख्या मिलेगी। दूसरा पक्ष k को इस प्रकार सेट करना चाहता है कि वह जीत जाए। k का न्यूनतम संभव मान क्या होगा।

तो, अगर इनपुट ए =[2, 2, 3, 2, 2] जैसा है, तो आउटपुट 5 होगा, क्योंकि पहली पार्टी को 2 + 2 + 3 + 2 + 2 =11 वोट मिल रहे हैं। अगर k =5 है, तो दूसरी पार्टी को 3 + 3 + 2 + 3 + 3 =14 वोट मिलेंगे और चुनाव जीतेंगे।

कदम

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

n := size of A
for initialize k := 0, when k < n, update (increase k by 1), do:
   x := A[k]
   m := maximum of m and x
   s := s + x
return maximum of m and (2 * s / n + 1)

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
   int n = A.size(), k = 0, s = 0, m = 0;
   for (int k = 0; k < n; k++){
      int x = A[k];
      m = max(m, x);
      s += x;
   }
   return max(m, 2 * s / n + 1);
}
int main(){
   vector<int> A = { 2, 2, 3, 2, 2 };
   cout << solve(A) << endl;
}

इनपुट

{ 2, 2, 3, 2, 2 }

आउटपुट

5

  1. पता लगाएं कि सी ++ में किसी स्रोत से k लंबाई से अधिक का पथ है या नहीं

    अवधारणा दिए गए ग्राफ के संबंध में, ग्राफ में एक स्रोत शीर्ष और एक संख्या k (यहां k स्रोत शीर्ष और गंतव्य शीर्ष के बीच ग्राफ की पथ लंबाई को इंगित करता है), हमारा कार्य यह निर्धारित करना है कि क्या कोई सरल पथ (बिना किसी चक्र के) शुरुआत है दिए गए स्रोत से और किसी अन्य शीर्ष (अर्थात गंतव्य) पर समाप्त ह

  1. C++ में N से M तक पहुँचने के लिए न्यूनतम चरणों की संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास दो पूर्णांक N और M हैं। हमें दिए गए संक्रियाओं को निष्पादित करके N से M तक पहुंचने के लिए न्यूनतम चरणों की संख्या ज्ञात करनी होगी - संख्या x को 2 से गुणा करें, तो x 2*x होगा संख्या x में से एक घटाएं, तो संख्या x - 1 होगी यदि एन =4 और एम =6, तो आउटपुट 2 होगा। इसलिए यदि हम एन

  1. न्यूनतम x ऐसे खोजें कि (x% k) * (x / k) ==n C++ . में

    दो धनात्मक पूर्णांक n और k दिए गए हैं, और हमें धनात्मक पूर्णांक x ज्ञात करना है, जैसे कि (x% k)*(x / k) n के समान हो। तो अगर n और k क्रमशः 4 और 6 हैं, तो आउटपुट 10 होगा। तो (10% 6) * (10 / 6) =4. जैसा कि हम जानते हैं कि x% k का मान रेंज [1 से k - 1] (0 शामिल नहीं है) में होगा। * के) / (एक्स% के) +