题意:超市搞促销,每天都从箱子里拿出最大和最小的差作为促销金额,给出n天的促销情况,问最后总的促销金额。
思路:set构造,当有小票的时候放入set,每天结束的时候取出头和尾即可。
code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll ans;
multiset<int>s;
multiset<int>::iterator np,mp;
int main()
{
int n,k,v;
while (~scanf("%d",&n)&&n){
ans=0;s.clear();
for (int i=0;i<n;i++){
scanf("%d",&k);
for (int j=0;j<k;j++) scanf("%d",&v),s.insert(v);
np=s.begin(),mp=(s.end());mp--;
ans+=*mp-*np;
s.erase(mp); s.erase(np);
}
cout<<ans<<endl;
}
}