範例程式碼 uva11039
//uva11039
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
bool cmp(int a, int b) {
return abs(a) < abs(b);
}
int main() {
int floor[500000];
int T, num, i;
while(scanf("%d", &T) == 1) {
while(T--)
{
int judge = 0, ans = 0, last = 0;
memset(floor, 0, sizeof(floor));
scanf("%d", &num);
for(i = 0; i <num; i++)
scanf("%d", &floor[i]);
sort(floor, floor+num, cmp);
for(i = 0; i < num; i++) {
if(judge == 0) {
last = abs(floor[i]);
ans++;
judge = floor[i] > 0 ? 2 : 1;
}
else if(judge == 1 && abs(floor[i]) > last && floor[i] > 0) {
last = abs(floor[i]);
ans++;
judge = 2;
}
else if(judge == 2 && abs(floor[i]) > last && floor[i] < 0) {
last = abs(floor[i]);
ans++;
judge = 1;
}
}
printf("%d\n", ans);
}
return 0;
}
}