[LeetCode] Apply Discount Every n Orders

1357. Apply Discount Every n Orders

There is a supermarket that is frequented by many customers. The products sold at the supermarket are represented as two parallel integer arrays products and prices, where the ith product has an ID of products[i] and a price of prices[i].

When a customer is paying, their bill is represented as two parallel integer arrays product and amount, where the jth product they purchased has an ID of product[j], and amount[j] is how much of the product they bought. Their subtotal is calculated as the sum of each amount[j] * (price of the jth product).

The supermarket decided to have a sale. Every nth customer paying for their groceries will be given a percentage discount. The discount amount is given by discount, where they will be given discount percent off their subtotal. More formally, if their subtotal is bill, then they would actually pay bill * ((100 - discount) / 100).

Implement the Cashier class:

  • Cashier(int n, int discount, int[] products, int[] prices) Initializes the object with n, the discount, and the products and their prices.
  • double getBill(int[] product, int[] amount) Returns the final total of the bill with the discount applied (if any). Answers within 10-5 of the actual value will be accepted.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Cashier {
unordered_map<int, int> mp;
int n, dis;
int cnt = 0;
public:
Cashier(int n, int discount, vector<int>& products, vector<int>& prices) : n(n), dis(discount) {
for(int i = 0; i < products.size(); i++) {
mp[products[i]] = prices[i];
}
}

double getBill(vector<int> product, vector<int> amount) {
int sum = 0;
for(int i = 0; i < product.size(); i++) {
sum += mp[product[i]] * amount[i];
}
++cnt;
if(cnt % n) return sum;
return sum * ((100-dis)/100.0);
}
};

/**
* Your Cashier object will be instantiated and called as such:
* Cashier* obj = new Cashier(n, discount, products, prices);
* double param_1 = obj->getBill(product,amount);
*/
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/07/13/PS/LeetCode/apply-discount-every-n-orders/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.