之前一直考虑把正数放一个数组里,负数放一个数组里,后来发现都放在一起反而很简便,只要定义好排序方法就好了。赶着去上课,就不多说了。
#include<iostream>
#include<math.h>
#include<algorithm>//sort的头文件
#define MAXN 500010
int n,a[MAXN];
using namespace std;
int cmp(int x,int y)
{
return abs(x)>abs(y);//此处<和>都可以,即:楼层从上往下找和从下往上找都一样
}
void solve()
{
cin>>n;
for(int i=0; i<n; i++)
cin>>a[i];
sort(a,a+n,cmp);
int count=0,flag=0;
if(a[0]>0)
flag=1;
else
flag=-1;
count++;
for(int i=1; i<n; i++)
{
if(flag==1)
{
if(a[i]<0)
{
flag=-1;
count++;
}
}
else if(flag==-1)
{
if(a[i]>0)
{
flag=1;
count++;
}
}
}
cout<<count<<endl;
}
int main()
{
int p;
cin>>p;
while(p--)
{
solve();
}
return 0;
}