#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; long long x; int ans = 0; int start = 0; // 当前段起点(上一个0的下一个位置) int cntNeg = 0; // 当前段负数个数 int firstNeg = -1, lastNeg = -1; // 首/末个负数位置 for (int i = 0; i < n; ++i) { cin >> x; if (x == 0) { // 结束一段 int end = i - 1, len = i - start; if (len > 0) { if ((cntNeg & 1) == 0) ans = max(ans, len); else { ans = max(ans, max(lastNeg - start, end - firstNeg)); } } // 重置新一段 start = i + 1; cntNeg = 0; firstNeg = lastNeg = -1; } else { if (x < 0) { ++cntNeg; if (firstNeg == -1) firstNeg = i; lastNeg = i; } } } // 最后一段结算 int end = n - 1, len = n - start; if (len > 0) { if ((cntNeg & 1) == 0) ans = max(ans, len); else ans = max(ans, max(lastNeg - start, end - firstNeg)); } cout << ans << '\n'; return 0; }