Help me in solving DAA074 problem

My issue

not able tosolve

My code

#include <stdio.h>
#include<stdlib.h>
int compare(const void *a,const void *b){
    double diff = ((double (*)[2])b)[0][0]-((double(*)[2])a)[0][0];
    return (diff>0) - (diff<0);
}

int main(void) {
int n;
scanf("%d",&n);
double wmax;
scanf("lf",&wmax);
double a[n][2];
for(int i=0;i<n;i++){
double w,v;
scanf("%lf %lf",&w,&v);
double value_per_weight = v/w;
a[i][0] = value_per_weight;
a[i][1] = w;
}
qsort(a,n,sizeof(a[0]),compare);
double ans =0;
for(int i = n-1;i >= 0;i--){
    double weight_to_take = (wmax < a[i][1])?  wmax:a[i][1];
    ans += weight_to_take * a[i][0];
    wmax -= weight_to_take;
    if (wmax <= 0) break;
}

printf("%.16f\n",ans);
return 0;
}


Learning course: Analysis and Design of Algorithms
Problem Link: https://www.codechef.com/learn/course/alvas-ada/ALADA13/problems/DAA074