用于排序的大输入的运行时错误(快速排序)

Runtime error for large inputs for sorting ( quicksort)

这是一个非常简单的程序,用户输入 (x,y) 坐标和距离 'd' 程序必须找出从 (x,y) 到 (x+) 的不重复坐标的数量d,y).

例如:如果一个测试用例的输入是:4,9,2 那么不重复的坐标是 (4,9),(5,9) 和 (6,9)(x=4,y= 9,d=2).我使用了问题中提到的排序算法(以跟踪多次出现)但是程序显示超过 30 个测试用例的运行时错误。代码中是否有任何错误或我的编译器有问题?

问题的详细解释:https://www.hackerearth.com/practice/algorithms/sorting/merge-sort/practice-problems/algorithm/missing-soldiers-december-easy-easy/

#include <stdio.h>
#include <stdlib.h>

int partition(int *arr, int p, int r) {
    int x;
    x = arr[r];
    int tmp;
    int i = p - 1;
    for (int j = p; j <= r - 1; ++j) {
        if (arr[j] <= x) {
            i = i + 1;
            tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
        }
    }
    tmp = arr[i + 1];
    arr[i + 1] = arr[r];
    arr[r] = tmp;

    return (i + 1);
}

void quicksort(int *arr, int p, int r) {
    int q;

    if (p < r) {
        q = partition(arr, p, r);
        quicksort(arr, p, q - 1);
        quicksort(arr, q + 1, r);
    }
}

int count(int A[],int ct) {
    int cnt = 0;
    for (int i = 0; i < ct; ++i) {
        if (A[i] != A[i + 1]) {
            cnt++;
        }
    }
    return cnt;
}

int main() {
    int t;
    scanf("%d", &t);
    long int tmp, y, d;
    int ct = 0;
    int i = 0;
    int x[1000];
    int j = 0;
    for (int l = 0; l < t; ++l) {
        scanf("%d%d%d", &tmp, &y, &d);
        ct = ct + d + 1; //this counts the total no of coordinates for each (x,y,d)
        for (int i = 0; i <= d; ++i) {
           x[j] = tmp + i;  //storing all possible  the x and x+d coordinates
           j++;
        } 
    }
    int cnt;
    int p = ct - 1;
    quicksort(x, 0, p); //quicksort sorting 

    for (int l = 0; l < ct; ++l) {
        printf("%d ", x[l]); //prints sorted array not necessary to question
    }
    cnt = count(x, ct);  //counts the number of non-repeated vertices 
    printf("%d\n", cnt);
}

问题是数组的边界 int x[1000] 不足以容纳下面给出的数据。