题目:UVA-11039-Building designing
根据绝对值排序。
1 #include <iostream>
2 #include<stdio.h>
3 #include<stdlib.h>
4 #include<string.h>
5 #include<math.h>
6 #include<algorithm>
7
8 using namespace std;
9
10 int a[500010];
11
12 bool cmp(int x,int y)
13 {
14 return abs(x)<abs(y);
15 }
16
17 int main()
18 {
19 int p,n,i,tmp,ans;
20 scanf("%d",&p);
21 while(p--)
22 {
23 scanf("%d",&n);
24 for(i=0; i<n; i++) scanf("%d",&a[i]);
25 sort(a,a+n,cmp);
26 i=0;
27 ans=1;
28 tmp=(a[0]>0)? 1:-1;
29 for(i=1; i<n; i++)
30 {
31 if(a[i]*tmp<0)
32 {
33 ans+=1;
34 tmp=(-tmp);
35 }
36 }
37 printf("%d\n",ans);
38 }
39 return 0;
40 }