কম্পিউটার

C++ এ টিমো আক্রমণ


ধরুন LOL বিশ্বে, টিমো নামে একজন নায়ক আছে এবং তার আক্রমণ তার শত্রু অ্যাশেকে বিষক্রিয়ায় পরিণত করতে পারে। এখন, ধরুন আমরা Ashe এর দিকে Teemo এর আক্রমণের আরোহী সময় সিরিজ এবং Teemo এর আক্রমণ প্রতি বিষক্রিয়ার সময়কাল দিয়েছি, আমাদেরকে Ashe বিষাক্ত অবস্থায় মোট সময় বের করতে হবে। আমরা অনুমান করতে পারি যে টিমো একটি নির্দিষ্ট সময়ের একেবারে শুরুতে আক্রমণ করে এবং অ্যাশেকে অবিলম্বে বিষাক্ত অবস্থায় ফেলে।

ইনপুটটি [1,4] এবং 2 এর মত, তারপর আউটপুট হবে 4। তাই এর কারণ হল পয়েন্ট 1 এ, টিমো অ্যাশেকে আক্রমণ করা শুরু করে এবং অ্যাশেকে অবিলম্বে বিষাক্ত করে তোলে। এখানে এই বিষাক্ত স্ট্যাটাসটি 2 সেকেন্ড পর্যন্ত টাইম পয়েন্ট 2 শেষ না হওয়া পর্যন্ত স্থায়ী হবে। এবং পয়েন্ট 4 এ, টিমো আবার এই শত্রুকে আক্রমণ করে, এবং অ্যাশেকে আরও 2 সেকেন্ডের জন্য বিষাক্ত অবস্থায় থাকতে দেয়। তাই আপনাকে অবশেষে 4 আউটপুট করতে হবে।

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

  • সেট ret :=0
  • currEnd :=-1
  • n :=t এর আকার
  • আমি 0 থেকে n – 1
      পরিসরে
    • শুরু :=t[i], শেষ :=t[i] + d – 1
    • যদি currEnd
    • অন্যথায় ret :=ret + end – currEnd, currEnd :=end
  • রিটার্ন রিটার্ন

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int findPoisonedDuration(vector<int>& t, int d) {
      int ret = 0;
      int currEnd = -1;
      int n = t.size();
      for(int i = 0; i < n; i++){
         int start = t[i];
         int end = t[i] + d - 1;
         if(currEnd < start){
            ret += end - start + 1;
            currEnd = end;
         } else {
            ret += end - currEnd;
            currEnd = end;
         }
      }
      return ret;
   }
};
main(){
   vector<int> v = {1,4};
   Solution ob;
   cout << (ob.findPoisonedDuration(v, 2));
}

ইনপুট

[1,4]
4

আউটপুট

4

  1. C++ এ গেম ভি জাম্প করুন

  2. C++ এ সুন্দর অ্যারে

  3. C++-এ K ডিজিটগুলি সরান

  4. C++ এ চারটি বিভাজক