19232022-12-10 17:43:04KovácsHunorForma-1cpp11Futási hiba 0/1002.078s4360 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 hiba3ms1632 KiB
subtask20/20
2Futási hiba81ms2968 KiB
3Futási hiba85ms3048 KiB
4Futási hiba82ms3256 KiB
5Futási hiba79ms3312 KiB
6Futási hiba83ms3440 KiB
7Futási hiba81ms3668 KiB
8Futási hiba81ms3848 KiB
9Futási hiba79ms3848 KiB
subtask30/30
10Időlimit túllépés2.065s2496 KiB
11Időlimit túllépés2.059s2824 KiB
12Időlimit túllépés2.036s2884 KiB
13Időlimit túllépés2.048s2500 KiB
14Időlimit túllépés2.043s2800 KiB
15Időlimit túllépés2.075s2772 KiB
16Időlimit túllépés2.063s2812 KiB
17Időlimit túllépés2.075s2876 KiB
18Időlimit túllépés2.063s2792 KiB
subtask40/50
19Időlimit túllépés2.055s3368 KiB
20Időlimit túllépés2.069s3392 KiB
21Időlimit túllépés2.072s3488 KiB
22Időlimit túllépés2.078s3360 KiB
23Időlimit túllépés2.061s3480 KiB
24Időlimit túllépés2.048s3496 KiB
25Időlimit túllépés2.072s3536 KiB
26Időlimit túllépés2.056s3728 KiB
27Időlimit túllépés2.069s3840 KiB
28Időlimit túllépés2.072s4036 KiB
29Időlimit túllépés2.059s4360 KiB
30Időlimit túllépés2.065s3880 KiB