#P14767. [Bulgarian2017冬季赛]CMYK

[Bulgarian2017冬季赛]CMYK

题目描述

你需要为一种专用微控制器 BPWP 编写程序,使其解决如下问题。

给定 8 个彩色球。对于每个球,控制器需要从标准输入依次读入两个整数:

  • 该球的重量;
  • 该球的颜色编码。

颜色只可能是以下四种:

  • 65535:青色(Cyan)
  • 16711935:品红色(Magenta)
  • 16776960:黄色(Yellow)
  • 0:黑色(Black)

你的 BPWP 程序需要向标准输出依次输出四个整数,每个数单独占一行,分别表示:

  1. 所有青色球的总重量;
  2. 所有品红色球的总重量;
  3. 所有黄色球的总重量;
  4. 所有黑色球的总重量。

提交方式

这是一道 提交答案题

你提交的不是 C/C++/Python 程序,而是一个纯文本文件,文件内容本身就是一段 BPWP 程序

在 Hydro OJ 中提交时,任选一种语言提交该文本文件即可,评测时会把你提交的文件内容当作 BPWP 源程序处理。

BPWP 控制语言

指令格式

每条指令单独占一行。

支持以下 7 种指令:

指令 含义
DEF var 在控制器内存中定义变量 var,其初值为未定义的任意值
GET var 从标准输入读入一个整数到变量 var
PUT var 将变量 var 的值输出到标准输出,并单独占一行
ADD var value 执行 var = var + value
SUB var value 执行 var = var - value
MUL var value 执行 var = var * value
DIV var value 执行整数除法 var = var / value,只保留整数部分

其中 value 可以是:

  • 一个十进制整数常量;
  • 或另一个变量名。

语言规则

  • 指令名与变量名均只使用英文字母;
  • 变量名只能由英文字母组成
  • 不区分大小写;
  • 所有变量均为 32 位有符号整数
  • 指令与参数之间至少用一个空格分隔;
  • 整数采用十进制表示,可带前导负号 -
  • 允许空行;
  • 允许注释:从分号 ; 到本行末尾的内容均视为注释;
  • 如果发生 除以 0,或运算结果超出 32 位有符号整数范围,则结果视为未定义

输入格式(供你的 BPWP 程序读取)

16 个整数,表示 8 个球的重量与颜色编码,格式如下:

w1 c1 w2 c2 ... w8 c8

也可能以多行形式给出;你的程序只需要按 GET 的顺序依次读取即可。

输出格式(由你的 BPWP 程序输出)

输出 4 行:

sumCyan
sumMagenta
sumYellow
sumBlack

样例

输入

5 65535
2 65535
3 16711935
3 65535
4 16776960
5 16711935
2 0
6 0

输出

10
8
4
8

评分方式

共有 25 组隐藏测试。每组测试均包含 8 个球。

对于每一组测试:

  • 若青色总重量正确,获得该组测试的 30% 分值;
  • 若品红色总重量正确,获得该组测试的 30% 分值;
  • 若黄色总重量正确,获得该组测试的 20% 分值;
  • 若黑色总重量正确,获得该组测试的 20% 分值。

总分为这 25 组测试得分的平均值。

本地调试说明

题包中附有一个 interpretator.cpp,可以在本地把你写的 BPWP 程序作为输入进行解释执行。

编译文件

调用形式为:

interpretator 程序文件 数据文件

例如:

interpretator sum_5_prg.txt sum_5_data.txt

评测时 不会 使用你提交的 C/C++/Python 代码运行,而只会读取你提交文件中的文本内容,并将其当作 BPWP 源程序评分。