#include using namespace std; struct data { int ID; int ch,ma,en; }; bool cmp(data a,data b) { if(a.ch+a.en+a.ma>b.ch+b.ma+b.en) return 1; if(a.ch+a.en+a.mab.ch) return 1; if(a.ch void fsort(T *left,T *right,bool (*cmp)(T a,T b),T *k) { if(right-left<=1) return; unsigned int len=right-left; fsort(left,left+len/2,cmp,k); fsort(left+len/2,right,cmp,k+len/2); int i=0,j=len/2,n=0; while(i