Я пытаюсь запустить ту же функцию вычисления с c ++, и она работает как положено, но не с c, не могли бы вы сказать, что не так. Я просто сортирую два массива, сравнивая значение и увеличивая ответ;
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
int compare_function(const void *a,const void *b) {
int *x = (int *) a;
int *y = (int *) b;
return *x - *y;
}
int calculate(long long A[], long long G[],int t){
int answer = 0;
int j = 0;
int i = 0;
while (i < t) {
if(G[i] > A[j]){
i++;
j++;
answer++;
} else {
i++;
}
}
return answer;
}
int main()
{
int p;
scanf("%d", &p);
while (p > 0){
int t;
scanf("%d", &t);
long long G[t];
long long A[t];
for(int i=0;i<t;i++)
scanf("%d",&G[i]);
for(int i=0;i<t;i++)
scanf("%d",&A[i]);
qsort(G,t,sizeof (long long ),compare_function);
qsort(A,t,sizeof (long long ),compare_function);
printf("%d\n", calculate(A,G,t));
p--;
}
}
Я использовал c (g cc 8.2.0), и одна странная вещь - каждый раз, когда я запускал эту программу, я получал разные вывод.
Array Input
1
10
3 6 7 5 3 5 6 2 9 1
2 7 0 9 3 6 0 6 2 6
output: 6, expected : 7
constraints
1<= N <=100000
0<= Array elemts <= LLONG_MAX