UVa 11136 - Hoax or what

  题目大意:超市进行促销活动,顾客可以把账单放到一个箱子里,每天超市会从箱子中抽出最高消费者和最低消费者,最高消费者可以得到(最高消费-最低消费)的金钱。询问超市在n天的促销活动结束后应支付多少钱。

  找出动态集合的最大值和最小值,可以用multiset进行计算。

 1 #include <cstdio>
 2 #include <set>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7 #ifdef LOCAL
 8     freopen("in", "r", stdin);
 9 #endif
10     int n;
11     multiset<int> 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 }
View Code

  提交总是出现Submission error, 算了,先放着吧,以后再试试。

posted @ 2013-09-01 12:27  xiaobaibuhei  阅读(339)  评论(0编辑  收藏  举报