题目大意:超市进行促销活动,顾客可以把账单放到一个箱子里,每天超市会从箱子中抽出最高消费者和最低消费者,最高消费者可以得到(最高消费-最低消费)的金钱。询问超市在n天的促销活动结束后应支付多少钱。
找出动态集合的最大值和最小值,可以用multiset进行计算。
1 #include2 #include 3 using namespace std; 4 5 int main() 6 { 7 #ifdef LOCAL 8 freopen("in", "r", stdin); 9 #endif10 int n;11 multiset urn;12 while (scanf("%d", &n) && n)13 {14 urn.clear();15 int ans = 0;16 while (n--)17 {18 int k;19 scanf("%d", &k);20 int x;21 for (int i = 0; i < k; i++)22 {23 scanf("%d", &x);24 urn.insert(x);25 }26 ans += (*(--urn.end()) - *urn.begin());27 urn.erase(urn.begin());28 urn.erase(--urn.end());29 }30 printf("%d\n", ans);31 }32 return 0;33 }
提交总是出现Submission error, 算了,先放着吧,以后再试试。