思路: STL
分析:
1 题目意思比较不好理解,理解了题目之后我们可以利用STL的multiset来做
2 每次找到最大和最小的值,然后求解即可
代码:
#include<set> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; long long n , num , k , ans; long long minNum , maxNum; multiset<long long>s; int main(){ while(scanf("%lld" , &n) && n){ ans = 0; s.clear(); for(int i = 0 ; i < n ; i++){ scanf("%lld" , &k); for(int j = 0 ; j < k ; j++){ scanf("%lld" , &num); s.insert(num); } if(s.size() > 0){ multiset<long long>::iterator it; it = s.begin(); minNum = *it; it = s.end(); it--; maxNum = *it; s.erase(it); if(s.size() > 0){ it = s.begin(); s.erase(it); } ans += maxNum - minNum; } } printf("%lld\n" , ans); } return 0; }