leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

max_cnt_pos_neg_int.c (986B)


// 2529. Maximum Count of Positive Integer and Negative Integer
#include "leetcode.h"

/*
 * given an array 'nums' sorted in non-decreasing order, return the maximum
 * between the number of positive integers and he number of negative integers.
 * note that '0' is neither positive nor negative.
 */

int pos(long cnt) { return (int)(cnt >> 32); }

int neg(long cnt) { return (int)(cnt & 0x0000FFFFL); }

long sum(int n) {
  if (n > 0)
    return 1L << 32;
  else if (n < 0)
    return 1L;
  else
    return 0L;
}

int maximumCount(int *nums, int numsSize) {
  long cnt = 0;
  for (int i = 0; i < numsSize; i++)
    cnt += sum(nums[i]);
  return fmax(pos(cnt), neg(cnt));
}

int main() {
  int n1[] = {-2, -1, -1, 1, 2, 3}, n2[] = {-3, -2, -1, 0, 0, 1, 2},
      n3[] = {5, 20, 66, 1314};
  printf("%d\n", maximumCount(n1, ARRAY_SIZE(n1))); // expect: 3
  printf("%d\n", maximumCount(n2, ARRAY_SIZE(n2))); // expect: 3
  printf("%d\n", maximumCount(n3, ARRAY_SIZE(n3))); // expect: 4
}