কম্পিউটার

C++ এ আপেক্ষিক র‍্যাঙ্ক


ধরুন আমাদের কাছে এন অ্যাথলিটদের স্কোরের একটি তালিকা আছে, আমাদের তাদের আপেক্ষিক র‌্যাঙ্ক এবং শীর্ষ তিনটি সর্বোচ্চ স্কোরযুক্ত ব্যক্তিদের খুঁজে বের করতে হবে, যারা বিভিন্ন পদক হবে:"স্বর্ণ", "রৌপ্য" এবং "ব্রোঞ্জ"।

সুতরাং, যদি ইনপুটটি [2,5,3,1,0] এর মত হয়, তাহলে আউটপুট হবে [ব্রোঞ্জ,গোল্ড,সিলভার,4,5]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যদি সংখ্যার আকার 1 এর মতো হয়, তাহলে −

    • "গোল্ড"

      ফেরত দিন
  • যদি সংখ্যার আকার 2 এর সমান হয়, তাহলে −

    • যদি nums[0]> nums[1] হয়, তাহলে −

      • "গোল্ড", "সিলভার"

        ফেরত দিন
    • অন্যথায়

      • রিটার্ন "সিলভার", "গোল্ড"

  • একটি অ্যারে v

    সংজ্ঞায়িত করুন
  • একটি অ্যারে vec সংজ্ঞায়িত করুন

  • আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −

    • v

      এর শেষে nums[i] সন্নিবেশ করান
  • অ্যারে সাজান v

  • অ্যারে বিপরীত করুন v

  • একটি মানচিত্র mp

    সংজ্ঞায়িত করুন
  • যদি সংখ্যার আকার> 2, তাহলে −

    • mp

      -এ {v[0], "Gold" } ঢোকান
    • mp

      -এ {v[1], "Silver" } ঢোকান
    • mp

      -এ {v[2], "ব্রোঞ্জ" } ঢোকান
    • আরম্ভ করার জন্য i :=3, যখন i <আকার v এর, আপডেট করুন (i 1 দ্বারা বাড়ান), করবেন −

      • mp

        -এ { v[i], i + 1 as string} ঢোকান
    • আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −

      • vec

        এর শেষে mp[nums[i]] ঢোকান
  • রিটার্ন vec

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#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;
   }
};
main(){
   Solution ob;
   vector<int> v = {2,5,3,1,0};
   print_vector(ob.findRelativeRanks(v));
}

ইনপুট

{2,5,3,1,0}

আউটপুট

[Bronze, Gold, Silver, 4, 5, ]

  1. C++ Enum

  2. বিবৃতি সি++ পরিবর্তন করুন

  3. C++ এ মিতব্যয়ী নম্বর

  4. C++ পেন্টাটোপ নম্বর