一个很水的题,主要熟悉下STL中set的用法,set中元素不可重复,multisel中元素可重复,s.end()指向的是最后一个元素的下一个位置,这题还可以用优先队列解,就不写了。
#include<cstdio>
#include<set>
using namespace std;
multiset<int>s;
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
int i,j,k,t;
long long ans=0;
s.clear();
for(i=0;i<n;i++)
{
scanf("%d",&k);
for(j=0;j<k;j++)
{
scanf("%d",&t);
s.insert(t);
}
multiset<int>::iterator minn=s.begin(),maxn=s.end();
maxn--;
ans+=(*maxn-*minn);
s.erase(maxn),s.erase(minn);
}
printf("%lld\n",ans);
}
}