19222022-12-10 17:42:26KovácsHunorForma-1cpp17Futási hiba 0/1002.099s4292 KiB
#include "stdio.h"
#include "stdlib.h"

void QuickSort(long long* arr, int* index, int size){
    int pivot = 0;
    for (int i = 1; i < size; i++)
    {
        if(arr[pivot] < arr[i] || (arr[pivot] == arr[i] && index[pivot] > index[i])){
            arr[pivot] ^= arr[pivot+1];
            arr[pivot+1] ^= arr[pivot];
            arr[pivot] ^= arr[pivot+1];

            index[pivot] ^= index[pivot+1];
            index[pivot+1] ^= index[pivot];
            index[pivot] ^= index[pivot+1];
            pivot++;

            if(i != pivot){
                arr[pivot-1] ^= arr[i];
                arr[i] ^= arr[pivot-1];
                arr[pivot-1] ^= arr[i];

                index[pivot-1] ^= index[i];
                index[i] ^= index[pivot-1];
                index[pivot-1] ^= index[i];
            }
        }
    }
    if(pivot > 1)        QuickSort(arr, index, pivot);
    if(pivot < size-2) QuickSort(arr + (pivot+1), index + (pivot+1), size - (pivot+1));
}

long long distance(long long a, long long b, long long c, long long t){
    return t*t*a + t*b + c;
}

int main()
{
    int n, q;
    scanf("%d", &n);
    int* arr = (int*)malloc(sizeof(int)*n*3);
    for (int i = 0; i < n; i++)
    {
        scanf("%d%d%d", arr + i, arr + i + n, arr + i + 2*n);
    }
    scanf("%d", &q);
    int* sol = (int*)malloc(sizeof(int)*q);
    long long* dis = (long long*)malloc(sizeof(long long)*n);
    int* index = (int*)malloc(sizeof(int)*n);

    for (int i = 0; i < q; i++)
    {
        int p, t;
        scanf("%d%d", &p, &t);


        for (int j = 0; j < n; j++)
        {
            index[j] = j+1;
        }
        for (int j = 0; j < n; j++)
        {
            dis[j] = distance(arr[j], arr[j+n], arr[j+2*n], t);
        }

        QuickSort(dis, index, n);
        sol[i] = index[p-1];
    }
    for (int i = 0; i < q; i++)
    {
        printf("%d\n", sol[i]);
    }
    free(arr);
    free(sol);
    free(dis);
    return 1;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Futási hiba3ms1432 KiB
subtask20/20
2Futási hiba82ms2844 KiB
3Futási hiba85ms3044 KiB
4Futási hiba82ms3104 KiB
5Futási hiba79ms3328 KiB
6Futási hiba83ms3536 KiB
7Futási hiba81ms3752 KiB
8Futási hiba81ms3748 KiB
9Futási hiba79ms3972 KiB
subtask30/30
10Időlimit túllépés2.059s2728 KiB
11Időlimit túllépés2.072s2732 KiB
12Időlimit túllépés2.059s2712 KiB
13Időlimit túllépés2.072s2700 KiB
14Időlimit túllépés2.055s3188 KiB
15Időlimit túllépés2.063s3172 KiB
16Időlimit túllépés2.072s3308 KiB
17Időlimit túllépés2.075s3568 KiB
18Időlimit túllépés2.061s3276 KiB
subtask40/50
19Időlimit túllépés2.099s3364 KiB
20Időlimit túllépés2.075s3636 KiB
21Időlimit túllépés2.069s3888 KiB
22Időlimit túllépés2.052s3928 KiB
23Időlimit túllépés2.056s4132 KiB
24Időlimit túllépés2.063s3976 KiB
25Időlimit túllépés2.073s3828 KiB
26Időlimit túllépés2.059s4292 KiB
27Időlimit túllépés2.065s4180 KiB
28Időlimit túllépés2.065s3932 KiB
29Időlimit túllépés2.079s4160 KiB
30Időlimit túllépés2.065s4164 KiB