题意:超市每次从票箱选出最大和最小的账单,将(Max-Min)给Max的人,问n天后超市付出多少钱
思路:要省去排序的容器就有set和multiset,为了储存重复的数字,所以采用multiset
#include <iostream>
#include <cstring>
#include <set>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,t,m;
int Min,Max;
long long ans;
multiset<int> s;
int main(){
while (scanf("%d",&n) != EOF && n){
ans = 0;
s.clear();
for (int i = 0; i < n; i++){
scanf("%d",&m);
for (int j = 0; j < m; j++){
scanf("%d",&t);
s.insert(t);
}
if (s.size() > 0){
multiset<int >::iterator it;
it = s.begin();
Min = *it;
it = s.end();
it--;
Max = *it;
s.erase(it);
if (s.size() > 0){
it = s.begin();
s.erase(it);
}
ans += Max - Min;
}
}
printf("%lld\n",ans);
}
return 0;
}