oj上圣诞老人的礼物

问题遇到的现象和发生背景

oj上面测试出现这样的报错 Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域

问题相关代码,请勿粘贴截图

#include<stdio.h>
struct candy
{
double v,w;
double end;
};
struct candy candies[110];
struct candy test;
void sort(int n);
int main()
{
int n,w;
scanf("%d%d",&n,&w);
for(int i = 0;i < n;i++){
scanf("%lf%lf",&candies[i].v,&candies[i].w);
candies[i].end = candies[i].v/candies[i].w;
}
sort(n);
int i = 0;
double price = 0;
while(w){
if(w-candies[i].w >= 0){
price += candies[i].v;
w -= candies[i].w;
}
else{
price += w * candies[i].end;
break;
}
i++;
}
printf("%.1f\n",price);
return 0;
}
void sort(int n)
{
int i,j;
for(i = 0;i < n; i++){
for(j = 0; j < n-i-1; j++){
if(candies[j].end<candies[j+1].end)
{
test = candies[j];
candies[j] = candies[j+1];
candies[j+1] = test;
}
}
}
return;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果