昨日コード貼っつけることになってましたが、寝ちまいました失礼。
ソートの基準クラスはこれ。昨日参加してない人はスルーしてください。

template<class T>
class MyCmp{
public:
enum cmp_mode{asc, desc};
MyCmp(cmp_mode m=normal):mode(m){}
bool operator()(const T& t1, const T& t2) const{ //要素の比較
return mode == asc ? t1 < t2 : t2 < t1;
}
bool operator==(const MyCmp& mc){ //ソートの基準の比較
return mode == mc.mode;
}
private:
cmp_mode mode;
};