Its not passing all the test cases on leetcode

class Solution {
public:
int maxProduct(vector& nums) {
if(nums.size()==1)
return nums[0];

vector<int>pp(nums.size()+1,1);
vector<int>np(nums.size()+1,1);
bool haspos=false;
bool haszero=false;
int i=1;
for(auto x:nums)
{if(x==0)
{haszero=true;
  pp[i]=1;
  np[i]=1;
}
else if(x<0)
{if(np[i-1]==1)
pp[i]=1;
else
pp[i]=np[i-1]*x;
np[i]=pp[i-1]*x;
}
else
{haspos=true;
  if(np[i-1]==1)
np[i]=1;
else
np[i]=np[i-1]*x;
pp[i]=pp[i-1]*x;
}
 i++;
}
int maxpr=INT_MIN;
 for(auto x:pp)

maxpr=max(maxpr,x);
if(maxpr==1)
{if(haspos)return 1;
if(haszero)return 0;
}
return maxpr;

}

};