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

C++ कोड: गणित प्रतियोगिता के विजेता का पता लगाना


मान लीजिए हमारे पास आकार n के दो सरणी P और T हैं। और एक और संख्या c है। अमल और बिमल एक गणित प्रतियोगिता में भाग लेने जा रहे हैं। n समस्याएं हैं। i-वीं समस्या का प्रारंभिक स्कोर P[i] है, और इसे हल करने में T[i] समय लगता है। P और T दोनों बढ़ते क्रम में सॉर्टेड हैं। यहां c अंक खोने के लिए स्थिरांक है। यदि कोई समस्या समय x (प्रतियोगिता शुरू होने के x मिनट बाद) पर जमा की जाती है, तो यह max(0, P[i] - c*x) अंक देती है। अमल समस्याओं को क्रम 1, 2, ... n में हल करने जा रहा है और बिमल उन्हें n, n-1, ... 1 की तरह हल करने जा रहा है। हमें यह पता लगाना है कि अधिकतम स्कोर किसे मिलेगा। यदि उनके पास समान है, तो यह 'Tie' होगा।

इसलिए, यदि इनपुट c = 2; P = [50, 85, 250]; T = [10, 15, 25] है, तो आउटपुट Amal होगा।

चरण

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

n := size of P m := 0 ans1 := 0 ans2 := 0 for initialize i := 0, when i < n, update (increase i by 1), do:    m := m + T[i]    ans1 := ans1 + maximum of (0, P[i] - c * m) m := 0 for initialize i := n - 1, when i > 1, update (decrease i by 1), do:    m := m + T[i]    ans2 := ans2 + maximum of (0, P[i] - c * m) if ans1 > ans2, then:    return "Amal" otherwise when ans1 < ans2, then:    return "Bimal" Otherwise    return "Tie"

उदाहरण

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

#include <bits/stdc++.h> using namespace std; string solve(int c, vector<int> P, vector<int> T){    int n = P.size();    int m = 0, ans1 = 0, ans2 = 0;    for (int i = 0; i < n; i++){       m += T[i];       ans1 += max(0, P[i] - c * m);    }    m = 0;    for (int i = n - 1; i > 1; i--){       m += T[i];       ans2 += max(0, P[i] - c * m);    }    if (ans1 > ans2)       return "Amal";    else if (ans1 < ans2)       return "Bimal";    else       return "Tie"; } int main(){    int c = 2;    vector<int> P = { 50, 85, 250 };    vector<int> T = { 10, 15, 25 };    cout << solve(c, P, T) << endl; }

इनपुट

2, { 50, 85, 250 }, { 10, 15, 25 }

आउटपुट

Amal

  1. - C++ कोड: बैटरी संयोजनों की संख्या ढूंढें

    मान लीजिए, हमारे पास n बैटरी हैं जिनका अधिकतम 5 बार उपयोग किया जा सकता है। हमारे पास कुछ उपकरण हैं जिन्हें तीन बैटरी की आवश्यकता होती है और उपकरण का प्रत्येक उपयोग बैटरी के उपयोग काउंट को 1 से बढ़ाता है। यदि हमें उपकरणों का k बार उपयोग करना है, तो हमें यह पता लगाना है कि उपकरणों को पावर देने के लिए

  1. - सेल कलरिंग गेम के विजेता को ढूंढने के लिए C++ प्रोग्राम

    मान लीजिए हमारे पास N-तत्वों वाले दो ऐरे A और B हैं। अमल और बिमल 1 से N तक गिने गए सेल नंबर वाले बोर्ड पर एक खेल खेल रहे हैं। और N-1 सड़कें हैं। सड़कें दो सेल को जोड़ती हैं। इसलिए iवीं सड़क A[i] को B[i] से जोड़ती है। प्रत्येक सेल को बार-बार आसन्न सेल की यात्रा करके हर दूसरे सेल से पहुंचा जा सकता है।

  1. - C++ में परम्यूटेशन खोजें - गुप्त हस्ताक्षर से लेक्सिकोग्राफिकली सबसे छोटा

    समस्या विवरण मान लीजिए हमारे पास एक गुप्त हस्ताक्षर है जिसमें वर्ण D और I होते हैं। D दो संख्याओं के बीच घटते संबंध को दर्शाता है, I बढ़ते संबंध को दर्शाता है। यह गुप्त हस्ताक्षर एक विशेष पूर्णांक सरणी द्वारा निर्मित किया गया था, जिसमें 1 से n तक सभी अलग-अलग संख्याएं विशिष्ट रूप से होती हैं। उदाहर