19202022-12-10 17:29:45KovácsHunorForma-1cpp11Futási hiba 0/1002.086s5716 KiB
#include "stdio.h"
#include "stdlib.h"

long long compare(const void* a, const void* b){
    return *(long long*)a-*(long long*)b;
}

void QuickSort(long long* arr, long long* index, long long size){
    long long pivot = 0;
    for (long long 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()
{
    long long n, q;
    scanf("%lld", &n);
    long long* arr = (long long*)malloc(sizeof(long long)*n*3);
    for (long long i = 0; i < n; i++)
    {
        scanf("%lld%lld%lld", arr + i, arr + i + n, arr + i + 2*n);
    }
    scanf("%lld", &q);
    long long* sol = (long long*)malloc(sizeof(long long)*q);
    long long* dis = (long long*)malloc(sizeof(long long)*n);
    long long* index = (long long*)malloc(sizeof(long long)*n);

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


        for (long long j = 0; j < n; j++)
        {
            index[j] = j+1;
        }
        for (long long 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 (long long i = 0; i < q; i++)
    {
        printf("%lld\n", sol[i]);
    }
    free(arr);
    free(sol);
    free(dis);
    return 1;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Futási hiba3ms1364 KiB
subtask20/20
2Futási hiba83ms4468 KiB
3Futási hiba87ms4616 KiB
4Futási hiba83ms4836 KiB
5Futási hiba81ms5052 KiB
6Futási hiba86ms5240 KiB
7Futási hiba82ms5444 KiB
8Futási hiba82ms5640 KiB
9Futási hiba81ms5716 KiB
subtask30/30
10Időlimit túllépés2.068s2856 KiB
11Időlimit túllépés2.015s3028 KiB
12Időlimit túllépés2.062s3124 KiB
13Időlimit túllépés2.052s3064 KiB
14Időlimit túllépés2.061s3056 KiB
15Időlimit túllépés2.065s3404 KiB
16Időlimit túllépés2.055s3148 KiB
17Időlimit túllépés2.056s3444 KiB
18Időlimit túllépés2.049s3196 KiB
subtask40/50
19Időlimit túllépés2.052s3668 KiB
20Időlimit túllépés2.052s3548 KiB
21Időlimit túllépés2.052s3812 KiB
22Időlimit túllépés2.056s3432 KiB
23Időlimit túllépés2.025s3448 KiB
24Időlimit túllépés2.046s3428 KiB
25Időlimit túllépés2.052s3816 KiB
26Időlimit túllépés2.046s3996 KiB
27Időlimit túllépés2.058s3976 KiB
28Időlimit túllépés2.086s3936 KiB
29Időlimit túllépés2.016s3836 KiB
30Időlimit túllépés2.013s4436 KiB