參考資訊:
https://www.cnblogs.com/cnoodle/p/17281951.html
題目:

解答:
int mysort(const void *a, const void *b)
{
return (*(int *)a) - (*(int *)b);
}
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* successfulPairs(int *spells, int spellsSize, int *potions, int potionsSize, long long success, int *returnSize)
{
int c0 = 0;
int *r = malloc(sizeof(int) * spellsSize);
memset(r, 0, sizeof(int) * spellsSize);
qsort(potions, potionsSize, sizeof(int), mysort);
for (c0 = 0; c0 < spellsSize; c0++) {
int left = 0;
int right = potionsSize;
while (left < right) {
long long t = 0;
int m = left + ((right - left) >> 1);
t = (long long)spells[c0] * potions[m];
if (t < success) {
left = m + 1;
}
else {
right = m;
}
}
r[c0] = potionsSize - left;
}
*returnSize = spellsSize;
return r;
}