#DEPR001. DE-PR-001 实操一 订单清洗与去重

    ID: 642 Type: Default 2000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 4 Uploaded By: Tags>代码实操数据工程技术人员专项基础与进阶题族:DE-PR-001公开样题公开样题

DE-PR-001 实操一 订单清洗与去重

DE-PR-001 · 数据工程技术人员 · 专项 · 满分 25 分 · 基础与进阶

可提交 C、C++、Java、Python 3 和 Node.js。评测机没有安装 Kotlin、PyPy,也没有支持大整数的 GNU awk,因此不开放 Kotlin、PyPy 和 Bash。

业务与规则

1. order_id为NA、amount为NA、或amount<0的行判为无效;无效行计入invalid_count且不参与去重。

2. 其余字段保证有效。amount是以分为单位的整数,可为0;version为非负整数。

3. 有效行按order_id去重,保留version最大者;若版本相同,保留输入位置较后者。duplicate_count=有效原始行数-去重后行数。

4. 输出保留行按order_id字典升序排列。不得先去重再校验。

输入

第一行n;随后n行:order_id customer_id version amount。编号均为仅含大写字母和数字、不含空格的字符串,order_id、amount可为NA。

输出

第一行:保留行数 invalid_count duplicate_count;随后每行:order_id customer_id version amount。无保留行时只输出第一行。

范围

0≤n≤100000;0≤version≤1e9;有效金额0至1e12分。建议2秒、256MB;整数输出精确匹配。

样例输入

6
O1 C1 1 100
O1 C1 2 120
O2 C2 1 NA
NA C2 1 50
O3 C3 1 0
O1 C4 2 130

样例输出

2 2 2
O1 C4 2 130
O3 C3 1 0

附件中的 sample.in、sample.out 与上面样例一致,不计入 25 分。计分点见测试配置,按点给分。

整数和文本按空白分隔后的 token 精确比较;小数允许绝对误差或相对误差 1e-6。时限 2 秒、内存 256MB;Java、Python 3 和 Node.js 时限按 2 倍,Java 内存按 2 倍。

题族:DE-PR-001。状态:公开样题。组卷:否。公开:是。