# 題目: UVa 11136 - Hoax or what
# 題目說明
Mal-Wart超市正在進行促銷,以下是說明
- 客戶需將寫有電話的帳單存入抽獎箱
- 每天結束時會選擇最貴及最便宜的帳單各一張,買最貴的人得到最貴與最便宜的差額
- 抽獎完的帳單不會放回抽獎箱
INPUT:
每筆資料第一行為一個整數n,代表有n天
接下來會有n行,每行會有一個整數k,代表帳單的數量,接下來k個整數代表每個帳單的金額
當n為0時結束程式
OUTPUT:
輸出超市總共要為這個促銷支出多少錢
# 解題方法
利用multiset自動排序,每次取頭與尾的帳單即為最大與最小,相減後累加至結果
由於測資的大小,結果需用long long存
# 參考程式碼
#include <iostream>
#include <set>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, k, temp;
unsigned long long total;
multiset<int> bill;
while (cin >> n && n) {
total = 0;
bill.clear();
while (n--) {
cin >> k;
for (size_t i = 0; i < k; i++) cin >> temp, bill.emplace(temp);
total += *bill.rbegin() - *bill.begin();
bill.erase(bill.begin());
auto it = bill.end();
bill.erase(--it);
}
cout << total << "\n";
}
return 0;
}