1924 2022. 12. 10 17:45:12 KovácsHunor Forma-1 cpp11 Időlimit túllépés 20/100 2.099s 4144 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);
    free(index);
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1328 KiB
subtask2 20/20
2 Elfogadva 82ms 2840 KiB
3 Elfogadva 86ms 3088 KiB
4 Elfogadva 82ms 3292 KiB
5 Elfogadva 79ms 3428 KiB
6 Elfogadva 83ms 3664 KiB
7 Elfogadva 81ms 3864 KiB
8 Elfogadva 81ms 4044 KiB
9 Elfogadva 79ms 4144 KiB
subtask3 0/30
10 Időlimit túllépés 2.075s 2744 KiB
11 Időlimit túllépés 2.055s 2880 KiB
12 Időlimit túllépés 2.063s 2652 KiB
13 Időlimit túllépés 2.013s 2876 KiB
14 Időlimit túllépés 2.055s 3024 KiB
15 Időlimit túllépés 2.058s 3332 KiB
16 Időlimit túllépés 2.042s 3164 KiB
17 Időlimit túllépés 2.038s 3120 KiB
18 Időlimit túllépés 2.058s 3228 KiB
subtask4 0/50
19 Időlimit túllépés 2.063s 3660 KiB
20 Időlimit túllépés 2.072s 3596 KiB
21 Időlimit túllépés 2.072s 3392 KiB
22 Időlimit túllépés 2.099s 3756 KiB
23 Időlimit túllépés 2.005s 3784 KiB
24 Időlimit túllépés 2.013s 4036 KiB
25 Időlimit túllépés 2.052s 4080 KiB
26 Időlimit túllépés 2.052s 3876 KiB
27 Időlimit túllépés 2.096s 3988 KiB
28 Időlimit túllépés 2.052s 3708 KiB
29 Időlimit túllépés 2.081s 3988 KiB
30 Időlimit túllépés 2.072s 3712 KiB