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

बाइनरी ऐरे पर क्वेरी ऑपरेशन प्रोसेस करने के लिए C++ कोड


मान लीजिए हमारे पास n एलिमेंट्स वाला एक ऐरे A है और q क्वेरीज वाली एक और लिस्ट Q है। प्रत्येक Query[i] में एक जोड़ी (x, k) होती है। जब हम एक क्वेरी प्रोसेस करते हैं, तो x के लिए: A[x] के मान को 1 से घटाएं। k के लिए, kवां सबसे बड़ा एलिमेंट प्रिंट करें। प्रारंभ में A में सभी एलिमेंट्स या तो 0 या 1 होते हैं।

इसलिए, यदि इनपुट इस तरह है: A = [1, 1, 0, 1, 0]; Q = [[2, 3], [1, 2], [2, 3], [2, 1], [2, 5]], तो आउटपुट होगा [1, 1, 1, 0]

चरण

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

n := size of A m := 0 for initialize i := 0, when i < n, update (increase i by 1), do:    if A[i] is non-zero, then:       (increase m by 1) for initialize j := 0, when j < size of Q, update (increase j by 1), do:    x := Q[j, 0]    k := Q[j, 1]    if x is same as 0, then:       if A[k] is non-zero, then:          (decrease m by 1)       Otherwise          (increase m by 1)       A[k] := A[k] XOR 1    Otherwise       if m >= k, then:          print 1       Otherwise          print 0

उदाहरण

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

#include <bits/stdc++.h> using namespace std; void solve(vector<int> A, vector<vector<int>> Q){    int n = A.size();    int m = 0;    for (int i = 0; i < n; i++){       if (A[i])       m++;    }    for (int j = 0; j < Q.size(); j++){       int x = Q[j][0];       int k = Q[j][1];       if (x == 0){          if (A[k])             m--;          else             m++;          A[k] ^= 1;       }       else{          if (m >= k)             cout << 1 << ", ";          else             cout << 0 << ", ";       }    } } int main(){    vector<int> A = { 1, 1, 0, 1, 0 };    vector<vector<int>> Q = { { 1, 2 }, { 0, 1 }, { 1, 2 }, { 1, 0 },{ 1, 4 } };    solve(A, Q); }

इनपुट

{ 1, 1, 0, 1, 0 }, { { 1, 2 }, { 0, 1 }, { 1, 2 }, { 1, 0 }, { 1, 4 }}

आउटपुट

1, 1, 1, 0,

  1. C++ में सरणी कार्यान्वयन के साथ बाइनरी ट्री C++ में सरणी कार्यान्वयन के साथ बाइनरी ट्री

    एक बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें ट्री का प्रत्येक नोड अधिकतम दो चाइल्ड नोड रख सकता है। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के नाम से जाना जाता है। एक साधारण बाइनरी ट्री है - ट्री को दर्शाने के दो तरीके हैं, डायनामिक नोड प्रतिनिधित्व जो लिंक्ड लिस्ट का उपयोग करता है अनुक्

  1. - C++ में स्ट्रिंग्स की सरणी

    इस खंड में हम देखेंगे कि C++ में स्ट्रिंग्स की सरणी को कैसे परिभाषित किया जाए। जैसा कि हम जानते हैं कि C में कोई स्ट्रिंग्स नहीं थीं। हमें कैरेक्टर सरणी का उपयोग करके स्ट्रिंग्स बनानी पड़ती थीं। इसलिए कुछ स्ट्रिंग्स की सरणी बनाने के लिए, हमें कैरेक्टर्स की 2-आयामी सरणी बनानी पड़ती थी। प्रत्येक पंक्

  1. - C++ में सॉर्टिंग

    इस सेक्शन में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिदम कैसे निष्पादित करें। एक सॉर्टेड ऐरे एक ऐरे है जिसमें प्रत्येक एलिमेंट किसी क्रम में सॉर्टेड होते हैं जैसे न्यूमेरिकल, अल्फाबेटिकल आदि। एक न्यूमेरिकल ऐरे को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज स