fork download
  1. /*
  2. Input: n (int, số giờ học của LALA)
  3. Output: YES nếu Lala giữ lời hứa với bố mẹ
  4. NO ngược lại
  5.  
  6. Lời hứa:
  7. 1. Không được học Tin học (số 0) quá 3 tiếng
  8.   2. Sau khi học Tin học thì Lala phải dành ra ít nhất 1 tiếng học Tiếng Anh (số 1)
  9.  
  10. Gọi mảng a là mảng chứa các môn học của Lala trong n giờ
  11.  
  12. Điều kiện số 2:
  13. Nhận xét: Nếu như Lala học Tin học cuối cùng -> không có cách nào để thỏa được điều kiện này
  14. -> Kiểm tra giờ cuối cùng -> nếu giá trị = 0 -> NO
  15.  
  16. Điều kiện số 1:
  17. Kiểm tra 4 tiếng liên tục a_i, a_{i + 1}, a_{i + 2}, a_{i + 3}, nếu cả 4 đều = 0
  18.   -> Lala đã học quá 3 tiếng Tin học liên tục -> NO
  19.   Nếu có ít nhất 1 tiếng = 1 -> kiểm tra tiếp i tiếp theo (i chạy từ 0 đến n - 4)
  20. */
  21.  
  22. #include <iostream>
  23. #include <vector>
  24. using namespace std;
  25.  
  26. void inp(vector<int> &a, int &n) {
  27. cin >> n;
  28. a.resize(n);
  29. for(int &x:a)
  30. cin >> x;
  31. }
  32.  
  33. bool solve(vector<int> &a, int n) {
  34. if(a[n - 1] == 0)
  35. return 0;
  36. for(int i = 0; i <= n - 4; i++) {
  37. if(a[i] == 0 && a[i + 1] == 0 && a[i + 2] == 0 && a[i + 3] == 0)
  38. return 0;
  39. }
  40. return 1;
  41. }
  42.  
  43. int main() {
  44. int n; vector<int> a;
  45. inp(a, n);
  46.  
  47. if(solve(a, n)) cout << "YES\n";
  48. else cout << "NO\n";
  49.  
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 5324KB
stdin
5
0 0 0 1 1
stdout
YES