pta德才论遇到的问题

请大家帮忙看看代码哪里有问题?
我在devc++编译过了但运行时直接结束了,但在pta上能运行.
devc运行图

img

题目

img

样例

img

代码如下

#include<stdio.h>
#include<stdlib.h>


typedef struct student{
    int xuehao;
    int de;
    int cai;
    int sum;
}STU;
void sort(STU file[],int len);
int main(){
    STU file[100000],sf1[20000],sf2[20000],sf3[20000],sf4[20000];
    int L,H,N,i,f1=0,f2=0,f3=0,f4=0;
    
    scanf("%d %d %d",&N,&L,&H);
    
    for(i=0;i<N;i++){
        scanf("%d %d %d",&file[i].xuehao,&file[i].de,&file[i].cai);
        file[i].sum=file[i].de+file[i].cai;
    }
    for(i=0;i<N;i++){
        if(file[i].de>=L&&file[i].de>=L){//德才过了L;
            if(file[i].de>=H&&file[i].cai>=H){//找第一类学生
                sf1[f1++]=file[i];
                
            }else if(file[i].cai<H&&file[i].de>=H){//2
                sf2[f2++]=file[i];
               
            }else if(file[i].de>=file[i].cai){//3
               sf3[f3++]=file[i]; 
            }else {
                sf4[f4++]=file[i];
            }
        }
    }
    sort(sf1,f1);
    sort(sf2,f2);
    sort(sf3,f3);
    sort(sf4,f4);
    printf("%d\n",f1+f2+f3+f4);
    for(i=0;i<f1;i++){
        printf("%d %d %d\n",sf1[i].xuehao,sf1[i].de,sf1[i].cai);
    }
    for(i=0;i<f2;i++){
        printf("%d %d %d\n",sf1[i].xuehao,sf1[i].de,sf1[i].cai);
    }
    for(i=0;i<f3;i++){
        printf("%d %d %d\n",sf1[i].xuehao,sf1[i].de,sf1[i].cai);
    }
    for(i=0;i<f4;i++){
        printf("%d %d %d\n",sf1[i].xuehao,sf1[i].de,sf1[i].cai);
    }
    return 0;
}
void sort(STU file[],int len){
    int i,j;
    STU c;
    
    for(i=len-1;i>0;i--){
        for(j=0;j<i;j++){
            if(file[j].sum<file[j+1].sum){
                c=file[j];
                file[j]=file[j+1];
                file[j+1]=c;
            }
        }
    }
}

超内存了吧……