#L11. 云辉小零食
云辉小零食
Background
云辉是个十足的零食狂热粉,最近听说家附近的超市搞 “零食狂欢周” 优惠活动,直接揣着攒了半个月的零花钱冲了过去!活动规则看着简单却藏着 “小陷阱”:
① 每种零食限购 2 件(老板怕被人囤货抬价);② 参与优惠的零食(标有 “惠” 字)满 3 件打 9 折,满 5 件打 8 折,不满 3 件无优惠;
③ 不参与优惠的零食按原价结算。
云辉挑了一堆薯片、可乐、巧克力,到结账时却犯了难 —— 他对着购物篮里的商品,一会儿算不清限购数量超没超,一会儿算不懂折扣怎么叠,急得满头大汗,还差点把想买 2 件的番茄味薯片说成买 3 件,被老板笑着提醒 “小伙子,限购哦”。现在请你帮云辉模拟结账流程,先看看他想买的商品数量合不合法,再算出最终总价,判断他带的钱够不够,帮他顺利抱走零食(或者告诉他还差多少钱)!
Description
给定三个参数:云辉带的零花钱 M(整数)、商品总数 n(整数),以及 n 件商品的信息(每件商品含三个整数:单价 p、是否参与优惠 flag(0 = 不参与,1 = 参与)、购买数量 q)。请按以下规则模拟结账过程并输出结果:
先检查所有商品的购买数量:若任意商品 q>2,直接输出 “INVALID”(限购 2 件);
若数量均合法,计算总价:
不参与优惠的商品总价 = 该类商品单价 × 数量之和;
参与优惠的商品:先计算原价总和(单价 × 数量之和),再按规则打折(满 3 件 9 折 = 原价 ×0.9,满 5 件 8 折 = 原价 ×0.8,不满 3 件无折扣);
最终总价 = 不参与优惠商品总价 + 参与优惠商品折后价(结果四舍五入保留整数);
对比 M 和最终总价:
若 M≥最终总价:输出 “YES” 和找零金额(M - 最终总价),中间用空格分隔;
若 M <最终总价:输出 “NO” 和还差的金额(最终总价 - M),中间用空格分隔。
Format
Input
第一行两个整数 M 和 n(满足 1≤M≤1000,1≤n≤10);
接下来 n 行,每行三个整数 p、flag、q(满足 1≤p≤100),flag∈{0,1},1≤q≤5),分别对应商品的单价、是否参与优惠、购买数量。
Output
按规则输出结果:
若有商品超限购:输出 “INVALID”;
否则输出两个值,第一个为 “YES” 或 “NO”,第二个为对应金额(整数)
Samples
100 4
15 1 2
10 1 2
8 0 2
20 1 1
YES 13
Limitation
1s, 1024KiB for each test case.
相关
在下列比赛中: