题目大意:给定n天,每天先插入一些数,然后取出最大值和最小值,付出最大值-最小值的代价,求n天后一共付出多少代价
堆/线段树/平衡树裸题
#include <set> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int n,m; long long ans; multiset<int> s; int main() { int i,j,x; cin>>n; for(i=1;i<=n;i++) { scanf("%d",&m); for(j=1;j<=m;j++) scanf("%d",&x),s.insert(x); multiset<int>::iterator it=s.begin(); ans-=*it;s.erase(it); it=s.end();it--; ans+=*it;s.erase(it); } cout<<ans<<endl; return 0; }
原文地址:http://blog.csdn.net/popoqqq/article/details/44275529