最后,我错过了描述中的一行:
经过几种方法,我通过以下代码通过了它:
class People{ public: char name[11]; int grade; int order; void print(){ printf("%s %dn", name, grade); }};int compar(const void *a, const void *b){ People *A = (People*)a; People *B = (People*)b; if(A->grade > B->grade) return 1; else if(A->grade < B->grade) return -1; else if(A->order > B->order) return 1; else if(A->order < B->order) return -1; return 0;}int main(){ int n; while(scanf("%d", &n)!=EOF){ People *p = new People[n]; for(int i=0;i<n;i++){ scanf("%s %d", p[i].name, &p[i].grade); p[i].order = i; } qsort(p, n, sizeof(People), compar); for(int i=0;i<n;i++){ p[i].print(); } delete[] p; }}
std :: stable_sort正常工作,但是,它收到TLE(超过时间限制),并且cin / cout也导致TLE。这就是我坚持使用printf /
scanf的原因。
感谢大家回答这个问题!:)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)