Help me in solving P4149 problem

My issue

hi guys,
this was my. submission for the maximum sum problem
include <bits/stdc++.h>
using namespace std;

int main() {
int t;
cin>>t;
while(t–){
priority_queue<int,vector,greater>pq;
int n;
cin>>n;
// vectorarr;
int sum=0;int zero=0;
for(int i=0;i<n;i++){
int ele;
cin>>ele;
if(ele<0)pq.push(ele);
else if(ele==0)zero++;
else sum+=ele;
}
while(pq.size()>1){
sum+=abs(pq.top());
pq.pop();
sum+=abs(pq.top());
pq.pop();
}
if((pq.size()==1) && zero)sum+=abs(pq.top());
else if(pq.size()==1)sum+=pq.top();
cout<<sum<<endl;
}
return 0;

}
can anyone help me where i am wrong with this code ?
it gave wrong answer in some hidden cases …
My doubt is should’nt zero be considered in case when there are odd number of negatives , if zero exists in the array then we can use it to convert the last negative to positive??

Problem Link: Maximise Sum Practice Coding Problem