কম্পিউটার টিউটোরিয়াল

C++ কোড: ম্যাথ কন্টেস্টের বিজয়ী খুঁজে বের করা


মান লক্ষ্য করুন দুটি অ্যারে P এবং T আকার n-এ, এবং আরেকটি সংখ্যা c। আমল এবং বিমল একটি ম্যাথ কন্টেস্টে অংশ নেবে। n টি সমস্যা আছে। i-তম সমস্যার প্রাথমিক স্কোর P[i], এবং সমাধান করতে T[i] সময় লাগে। P এবং T দুটোই ক্রমবর্ধমান ক্রমে সর্টেড। এখানে c হলো পয়েন্ট কমাতে কনস্ট্যান্ট। যদি একটি সমস্যা সময় x-এ সাবমিট করা হয় (কন্টেস্ট শুরু হওয়ার x মিনিট পর), তবে এটি max(0, P[i] - c*x) পয়েন্ট দেবে। আমল সমস্যা সমাধান করবে ১, ২, ... n ক্রমে এবং বিমল n, n-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++ কোড: গাণিতিক গড় বিচ্যুতি (Arithmetic Mean Deviation) ন্যূনতম করা

  2. C++ কোড: ব্যাটারি কম্বিনেশনের সংখ্যা গণনা

  3. C++ প্রোগ্রাম: সেল রঙ করার গেমের বিজয়ী খুঁজে বের করা

  4. C++-এ Find Permutation: গোপন স্বাক্ষর থেকে 렉্সিকোগ্রাফিক্যালি সর্বনিম্ন পারমুটেশন খুঁজে বের করা