Gửi bài giải

Điểm: 0,01 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python, SCRATCH

Cho một dãy ~A~ gồm ~n~ số nguyên ~a_{1}, a_{2}, a_{3}, ..., a_{n}~. Hãy tìm đoạn con đan dấu dài nhất của dãy ~A~.

Note:

  • Một đoạn con đan dấu của dãy ~A~ là một đoạn liên tiếp ~a_{l}, a_{l + 1}, a_{l + 2}, ..., a_{r}~ ~(l \leq r)~ sao cho ~\forall i: l \leq i < r~, ~a_{i}~ khác dấu ~a_{i + 1}~.
  • Số ~0~ không khác dấu với các số khác.

Input

  • Dòng đầu tiên chứa số nguyên ~n~ (~1 \leq n \leq 10^5~).
  • Dòng tiếp theo chứa ~n~ số nguyên ~a_{1}, a_{2}, a_{3}, ..., a_{n}~ (~|a_{i}| \leq 10^5~).

Output

  • Dòng thứ nhất in ra độ dài đoạn con đan dấu dài nhất của dãy ~A~.
  • Dòng tiếp theo in ra các số trong đoạn con đan dấu dài nhất, mỗi số cách nhau một khoảng trắng. Nếu có nhiều đoạn thoả mãn hãy in ra đoạn xuất hiện đầu tiên trong dãy.

Sample Test 1

Input:

5
-3 6 -2 9 5

Output:

4
-3 6 -2 9

Sample Test 2

Input:

6
1 -3 6 2 -9 5

Output:

3
1 -3 6

Note: Có hai đoạn đan dấu là ~[1, -3, 6]~ và ~[2, -9, 5]~, ta chỉ lấy đoạn xuất hiện đầu tiên.