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

सी++ में ऑनलाइन चुनाव

मान लीजिए एक चुनाव में, i-th वोट व्यक्तियों के लिए डाला गया था [i] समय पर [i]। अब, हमें निम्नलिखित क्वेरी फ़ंक्शन को लागू करना होगा:TopVotedCandidate.q(int t) यह उस व्यक्ति की संख्या ज्ञात करेगा जो t समय पर चुनाव का नेतृत्व कर रहा था। t समय पर डाले गए वोटों की गिनती हमारी क्वेरी में की जाएगी। यदि कोई टाई है, तो सबसे हालिया वोट (बंधे हुए उम्मीदवारों के बीच) जीत जाता है।

तो अगर हम इसे TopVotedCandidate([0,1,1,0,0,1,0], [0,5,10,15,20,25,30]) के साथ इनिशियलाइज़ करते हैं, तो q() को कॉल करें जैसे:q( 3), q(12), q(25), q(15), q(24), q(8), तो परिणाम प्रत्येक कॉल के लिए [0, 1, 1, 0, 0, 1] होगा। क्यू()। ऐसा इसलिए है क्योंकि समय 3 पर, वोट [0] हैं, और 0 आगे चल रहा है। समय 12 पर, वोट [0,1,1] हैं, और यहाँ 1 आगे चल रहा है। 25 के समय, वोट [0,1,1,0,0,1] हैं, और 1 आगे चल रहा है (जैसा कि सबसे हालिया वोट के लिए संबंध है।) यह समय 15, 24, और अंत में 8 पर 3 और प्रश्नों के लिए जारी है।

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

  • दो मानचित्र बनाएं m और गिनें

  • प्रारंभकर्ता में, निम्नलिखित कार्य करें

  • लीड :=-1

  • मैं के लिए 0 से समय के आकार की सीमा में

    • x :=बार[i]

    • गिनती [व्यक्तियों [i]] के मान को 1 से बढ़ाएं

    • अगर गिनती [लीड] <=गिनती [व्यक्तियों [i]], तो लीड:=व्यक्ति [i] और एम [एक्स]:=लीड अन्यथा एम [एक्स]:=लीड

  • q() विधि इस तरह होगी

    • t की ऊपरी सीमा को m में घटाएं, और संबंधित मान लौटाएं

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class TopVotedCandidate {
   public:
   map <int, int> m;
   map <int, int> count;
   TopVotedCandidate(vector<int>& persons, vector<int>& times) {
      int lead = -1;
      for(int i = 0; i < times.size(); i++){
         int x = times[i];
         count[persons[i]]++;
         if(count[lead] <= count[persons[i]]){
            lead = persons[i];
            m[x] = lead;
         }else{
            m[x] = lead;
         }
      }
   }
   int q(int t) {
      return ((--m.upper_bound(t)) -> second);
   }
};
main(){
   vector<int> v1 = {0,1,1,0,0,1,0}, v2 = {0,5,10,15,20,25,30};
   TopVotedCandidate ob(v1, v2);
   cout << (ob.q(3)) << endl;
   cout << (ob.q(12)) << endl;
   cout << (ob.q(25)) << endl;
   cout << (ob.q(15)) << endl;
   cout << (ob.q(24)) << endl;
   cout << (ob.q(8)) << endl;
}

इनपुट

Initialize the class using [0,1,1,0,0,1,0] and [0,5,10,15,20,25,30]. Call q()
method like below:
q(3)
q(12)
q(25)
q(15)
q(24)
q(8)

आउटपुट

0
1
1
0
0
1

  1. स्विच स्टेटमेंट C++

    C++ में स्विच स्टेटमेंट का उपयोग कैसे करें सशर्त बयान सभी प्रोग्रामिंग भाषाओं की एक सामान्य विशेषता है। इन कथनों का उपयोग किसी प्रोग्राम के प्रवाह को नियंत्रित करने और यह निर्दिष्ट करने के लिए किया जाता है कि कोड के विशिष्ट ब्लॉक कब निष्पादित किए जाने चाहिए। C++ में उपयोग किए जाने वाले मुख्य कंडीश

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की