ধরুন আমাদের n উপাদান সহ একটি অ্যারে A আছে। A-তে 0 বা 1 উপাদান আছে। একটি গাছ আছে। পরপর n দিনে, যদি A[i] 0 হয় তবে এটিকে জল দেওয়া হয় না, যদি এটি 1 হয় তবে এটি জল দেওয়া হয়, ফুলটি নিম্নলিখিত পদ্ধতিতে বৃদ্ধি পায় -
-
টানা দুই দিন গাছে পানি না দিলে তা মারা যায়
-
যদি গাছটিকে প্রথম দিনে জল দেওয়া হয় তবে এটি 1 সেন্টিমিটার বৃদ্ধি পায়
-
যদি গাছটিকে পরপর ith এবং (i+1) তম দিনে জল দেওয়া হয়, তবে এটি 1 সেন্টিমিটারের পরিবর্তে 5 সেমি বৃদ্ধি পায়।
-
যদি দিনে জল না দেওয়া হয় তবে এটি বাড়বে না।
শুরুতে গাছটি 1 সেমি লম্বা হয়। n দিন পর গাছের উচ্চতা বের করতে হবে। যদি এটি মারা যায়, তবে -1 ফেরত দিন।
সুতরাং, যদি ইনপুটটি A =[0, 1, 1] এর মতো হয়, তবে আউটপুট হবে 7, কারণ প্রথম দিনে, এটি বৃদ্ধি পাবে না, তাই উচ্চতা 1, দ্বিতীয় দিনের পরে, উচ্চতা 2 হবে, তারপর তৃতীয় দিনের পর তা হবে 2 + 5 =7।
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
r := 1 y := 0 n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: x := A[i] if r is same as -1, then: Ignore following part, skip to the next iteration if x is non-zero and y is non-zero, then: r := r + 5 otherwise when x is non-zero, then: (increase r by 1) otherwise when not x is non-zero and not y is non-zero and i > 0, then: r := -1 y := x return r
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A){ int r = 1; int y = 0; int n = A.size(); for (int i = 0; i < n; ++i){ int x = A[i]; if (r == -1) continue; if (x && y) r += 5; else if (x) ++r; else if (!x && !y && i > 0) r = -1; y = x; } return r; } int main(){ vector<int> A = { 0, 1, 1 }; cout << solve(A) << endl; }
ইনপুট
{ 0, 1, 1 }
আউটপুট
7