相信精打細算的你一定知道,每家超商在不同時段會提供不同即期品優惠。
以下是優惠相關資訊:
超商名稱 | 超商編號 | 優惠時段 | 優惠價格 |
---|---|---|---|
小萊 | 0 | 18:00 – 00:00 | 7 折 |
你家 | 1 | 10:00 – 17:00 / 17:00 – 00:00 | 7 折 |
-4 | 2 | 10:00 – 17:00 / 20:00 – 00:00 | 65 折 |
歐給 | 3 | 16:30 – 22:30 | 6 折 |
給定 N 筆消費明細,
每筆消費明細以 {id, h, m, a} 表示
分別代表購入超商編號 id、購入時間 h 時 m 分、購入商品的原始價格 a
你可以假定只要是處於該超商優惠時段,則必定只會購入有優惠的即期商品。
請協助計算 N 筆消費明細,經過優惠後的實際消費總額。
其中對於每筆消費,小數點後可無條件捨去。
範例測資
範例輸入 | 範例輸出 |
---|---|
第一行有一個正整數 N,代表消費明細數量 1 ≤ N ≤ 1000 接著有 N 行,每行有四個整數 id, h, m, a, 代表超商編號、購入小時、購入分鐘、購入商品原始價格 0 ≤ id ≤ 3 0 ≤ h ≤ 23 0 ≤ m ≤ 59 0 ≤ a ≤ 1000 | 經過優惠後的實際消費總額, 其中對於每筆消費,小數點後可無條件捨去。 |
4 0 19 30 100 1 19 30 100 2 19 30 100 3 19 30 100 | 300 |
2 0 0 0 100 3 16 0 100 | 170 |
解題思路
將目前時間轉換成「分鐘」這個單位,並且使用判斷式時也將優惠的時段轉換成「分鐘」。
範例程式碼-ZeroJudge K570: 關於友善時光這件事
#include <iostream>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N, ans = 0;
cin >> N;
for (int i = 0; i<N; i++) {
int id, h, m, a;
cin >> id >> h >> m >> a;
int min = m + (h*60);
if (id == 0) {
if (min >= 1080 || min == 0) ans += a*0.7;
else ans += a;
continue;
}
if (id == 1) {
if (min >= 600 || min == 0) ans += a*0.7;
else ans += a;
continue;
}
if (id == 2) {
if ((min >= 600 && min <= 1020) || min >= 1200 || min == 0) ans += a*.65;
else ans += a;
continue;
}
if (min >= 990 && min <= 1350) ans += a*.6;
else ans += a;
}
cout << ans << "\n";
}
//ZeroJudge K570
//Dr. SeanXD