#abc475b. Change

Change

题目描述

在 AtCoder 王国,流通着 11 元、1010 元、100100 元三种硬币,以及 10001000 元纸币。

高橋君最初持有 1010010^{100}10001000 元纸币、00 枚硬币,之后进行了 NN 次购物。

ii 次购物买了价值 AiA_i 元的商品。付款时,他只用 10001000 元纸币支付,且使用使总金额不少于 AiA_i 元的最少张数;找零时,收到的硬币总枚数最少

请求出 NN 次购物全部结束时,高橋君持有的各种硬币各有多少枚。

输入格式

N
A_1 ... A_N

输出格式

11 元硬币、1010 元硬币、100100 元硬币的顺序,输出 NN 次购物结束时高橋君持有的枚数,用空格隔开。

输入示例 1

3
1296 110 1

输出示例 1

13 18 24

示例 1 说明

  • 11 次:12961296 元,付 22 张纸币(20002000 元),找零 704704== 77100100++ 4411 元;
  • 22 次:110110 元,付 11 张纸币,找零 890890== 88100100++ 991010 元;
  • 33 次:11 元,付 11 张纸币,找零 999999== 9+9+99 + 9 + 9 枚。

累计:11 元硬币 4+0+9=134+0+9=13 枚,1010 元硬币 0+9+9=180+9+9=18 枚,100100 元硬币 7+8+9=247+8+9=24 枚。

注意 AiA_i 可以超过 10001000(第 11 次就是 12961296),此时要付多张纸币。

输入示例 2

12
3141 592 65358 9 79 323 84 6264 3 38327 950 28

输出示例 2

52 59 82

示例 2 说明

这组数据里 AiA_i 跨越了 11 位到 55 位,既有 9933 这种极小值,也有 6535865358 这种需要付 6666 张纸币的情形,可用来检验张数计算是否正确。

输入示例 3

4
1000 2000 999 1

输出示例 3

10 9 9

示例 3 说明

AiA_i 恰好是 10001000 的倍数时(第 1122 次),付的纸币金额正好等于商品价格,找零为 00,一枚硬币都不会拿到。第 33 次找零 11 元(1111 元硬币),第 44 次找零 999999 元(9+9+99+9+9 枚)。合计 11 元硬币 1+9=101+9=10 枚,1010 元与 100100 元硬币各 99 枚。

这组数据专门用来检验「整除时不要多付一张纸币」这个边界:若把张数写成 Ai/1000+1\lfloor A_i/1000 \rfloor + 1,第 11 次会多找 10001000 元,答案就错了。

约束条件

  • 1N10001 \le N \le 1000
  • 1Ai1051 \le A_i \le 10^5
  • 所有输入值均为整数