Mô tả bài toán
Cây cao 1cm ban đầu. Mảng A n phần tử (0/1): 1=tưới, 0=không. Quy tắc:
- Không tưới 2 ngày liên tiếp → chết (trả về -1).
- Tưới ngày i → cao +1cm.
- Tưới ngày i và i+1 liên tiếp → cao +5cm (thay vì 1+1).
- Không tưới → không cao.
Ví dụ
A=[0,1,1] → Ngày1:0→1cm; Ngày2:1→2cm; Ngày3:1→+5=7cm. Output:7.
Thuật toán
Duyệt mảng, giữ trạng thái ngày trước (y). Nếu hôm nay tưới (x=1) và hôm qua tưới (y=1) → +5. Chỉ hôm nay tưới → +1. Nếu cả hai không tưới và i>0 → chết (-1).
Code C++
#include <bits/stdc++.h>
using namespace std;
int solve(vector A) {
int h = 1, prev = 0;
for (int i = 0; i < (int)A.size(); ++i) {
int cur = A[i];
if (h == -1) continue;
if (cur && prev) h += 5;
else if (cur) h++;
else if (!cur && !prev && i > 0) h = -1;
prev = cur;
}
return h;
}
int main() {
vector A = {0,1,1};
cout << solve(A) << endl;
return 0;
}
Đầu vào / Đầu ra
Input: {0,1,1}
Output: 7