题意:活动天数为n, 每天有k张小票, 每一天奖品的价值为最大的小票减最小的小票, 同时删除这两张小票。问n天的奖品总价值是多少。
考察multiset的基本用法,它和set的区别就是,multiset可存重复元素,set不能
#include<cstring>
#include<iostream>
#include<set>
using namespace std;
multiset<int> q;
int n, k, a;
int main(){
while(scanf("%d", &n)==1 && n!=0){
long long ans = 0;//ans范围要注意
q.clear();
multiset<int>::iterator minp,maxp;
for(int i = 0; i<n; i++){
scanf("%d", &k);
for(int j = 0; j<k; j++){
scanf("%d", &a);
q.insert(a);
}
minp = q.begin();
maxp = q.end();
maxp--;//这里要注意
ans+=(*maxp-*minp);
q.erase(maxp);
q.erase(minp);
}
printf("%lld\n", ans);
}
return 0;
}