sort 函数中的cmp 要格外小心
我就是因为 cmp 函数有问题
一直 Runtime Error
#include <cstdio>
#include <algorithm>
#include <string>
using namespace std;
struct STU {
int sum;
char str[30];
}stu[1010];
int f[15];
bool cmp ( STU a, STU b ) {
if ( a.sum == b.sum ) {
string s1 ( a.str );
string s2 ( b.str );
return s1 < s2;
}
else return a.sum > b.sum;
}
int main ( ) {
int n, m, g, pa, gra;
while ( scanf ( "%d%d%d", &n, &m, &g ) != EOF && n ) {
for ( int i = 1; i <= m; ++i )
scanf ( "%d", &f[i] );
int tmp = 0;
for ( int i = 1; i <= n; ++i ) {
stu[i].sum = 0;
scanf ( "%s %d", stu[i].str, &pa );
for ( int j = 1; j <= pa; ++j ) {
scanf ( "%d", &gra );
stu[i].sum += f[gra];
}
if ( stu[i].sum >= g ) tmp++;
}
sort ( stu + 1, stu + 1 + n, cmp );
printf ( "%d\n", tmp );
for ( int i = 1; i <= tmp; ++i )
printf ( "%s %d\n", stu[i].str, stu[i].sum );
}
}