#include <cstring> #include <iostream> using namespace std; int main() { int n; cin >> n; int a[n], f[n], g[n]; for(int i = 0; i < n; i ++){ cin >> a[i]; } memset(f, 0, sizeof f); memset(g, 0, sizeof g); if(a[0] > 0) f[0] = 1; else if(a[0] < 0) g[0] = 1; int maxN = 0; for(int i = 1; i < n; i ++){ // 如果当前元素 > 0 if(a[i] > 0){ // 正数乘积数组长度 + 1 f[i] = f[i - 1] + 1; // 如果负数乘积长度数组 > 0 即乘积现在为负数又遇到了一个正数 乘积还是负数所以长度加1 if(g[i - 1] > 0) g[i] = g[i - 1] + 1; // 如果负数乘积长度为0 现在又遇到一个整数 还是为0 else g[i] = 0; } // 如果当前遇到的元素 < 0 else if(a[i] < 0){ // 负数乘积长度数组变成 正数的乘积长度 + 1 g[i] = f[i - 1] + 1; // 如果负数乘积长度 > 0 if(g[i - 1] > 0) f[i] = g[i - 1] + 1; // 否则乘积还是为负数 正数乘积长度为0 else f[i] = 0; } else f[i] = g[i] = 0; maxN = max(maxN, f[i]); } cout << maxN << endl; return 0; }