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

C++-এ রিলেটিভ র‍্যাঙ্কস (Relative Ranks)


N সংখ্যক এথলিটের স্কোর দেওয়া আছে। তাদের রিলেটিভ র‍্যাঙ্ক বের করতে হবে। টপ ৩ স্কোরের জন্য মেডেল: "Gold", "Silver", "Bronze"। বাকিদের জন্য র‍্যাঙ্ক নম্বর।

উদাহরণ: ইনপুট [2,5,3,1,0] হলে আউটপুট [Bronze, Gold, Silver, 4, 5]।

সমাধানের ধাপসমূহ

  • যদি আকার ১ হয়, {"Gold"} রিটার্ন করুন।
  • যদি আকার ২ হয়, বড়টি "Gold", ছোটটি "Silver"।
  • বड़े আকারের জন্য: স্কোর কপি করে সর্ট এবং রিভার্স করুন।
  • ম্যাপে টপ ৩-র জন্য মেডেল, বাকির জন্য স্ট্রিং র‍্যাঙ্ক সংরক্ষণ করুন।
  • মূল অরেটানुसারে ম্যাপ থেকে র‍্যাঙ্ক বের করুন।

C++ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;

void print_vector(vector<auto> v) {
    cout << "[";
    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << ", ";
    }
    cout << "]" << endl;
}

class Solution {
public:
    vector<string> findRelativeRanks(vector<int>& nums) {
        if (nums.size() == 1) return { "Gold" };
        if (nums.size() == 2) {
            if (nums[0] > nums[1]) return { "Gold", "Silver" };
            else return { "Silver", "Gold" };
        }
        vector<int> v;
        vector<string> vec;
        for (int i = 0; i < nums.size(); i++) v.push_back(nums[i]);
        sort(v.begin(), v.end());
        reverse(v.begin(), v.end());
        map<int, string> mp;
        if (nums.size() > 2) {
            mp.insert({v[0], "Gold" });
            mp.insert({v[1], "Silver" });
            mp.insert({v[2], "Bronze" });
            for (int i = 3; i < v.size(); i++) {
                mp.insert({ v[i], to_string(i + 1) });
            }
            for (int i = 0; i < nums.size(); i++)
                vec.push_back(mp[nums[i]]);
        }
        return vec;
    }
};

int main() {
    Solution ob;
    vector<int> v = {2,5,3,1,0};
    print_vector(ob.findRelativeRanks(v));
    return 0;
}

ইনপুট

{2,5,3,1,0}

আউটপুট

[Bronze, Gold, Silver, 4, 5, ]
  1. C++ Enum: একটি গাইড

  2. C++-এ Switch Statement: ব্যবহার করার পদ্ধতি

  3. Frugal সংখ্যা চেক করা (C++)

  4. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা