5A.盲盒找零(change)

时空限制:0.5 s / 512 MiB

输入输出方式:change.in / change.out

小 Z 开了一家糖果盲盒店!

所有盲盒的售价统一为 1010 元一个。现在有 nn 名顾客即将依次前来购买糖果盲盒,不幸的是,小 Z 的城市中不存在任何移动支付方式,这些顾客分别会用一张面值为 1010,2020 或 5050 元的纸币来付款,然后期望收到找零,第 ii 名顾客使用的纸币面额为 aia_i。

不幸的是,小 Z 在开业前没有为店里准备任何零钱,因此,他必须通过前面顾客付款的钱来为后面的顾客找零。好在,他可以选择性地拒绝某些顾客的购买。请你帮小 Z 算出:在这 nn 名顾客中,他至多能接受多少位顾客购买,并且给他们合适的找零?

输入格式

从文件 change.in 中读入数据。

输入的第一行包含一个正整数 nn,表示顾客数。

第二行包含 nn 个正整数 a1,a2,…,ana_1,a_2,\ldots,a_n,分别表示每名顾客支付的纸币面额。

输出格式

输出到文件 change.out。

输出一行一个整数,表示小 Z 接受顾客数量的最大值。

样例 1

输入 
4 10 20 20 50
输出 
2

可以接待前两名顾客。第一名顾客付款后,收银台有一张 1010 元纸币;接待第二名顾客时可用它找零。此后收银台没有 1010 元纸币,无法接待第三名顾客,也无法为第四名顾客找零。因此最多接待 22 名顾客。

样例 2

输入 
9 10 10 10 10 10 50 20 20 20
输出 
8

若接待第六名顾客,需要用四张 1010 元纸币找零,之后只能再接待一名支付 2020 元的顾客。拒绝第六名顾客,则可以接待其余所有顾客,共接待 88 名,因此答案为 88。

样例 3

输入 
10 10 10 20 20 50 10 50 20 10 20
输出 
9

一种最优方案是仅拒绝第七名顾客。接待第五名顾客时可用两张 2020 元纸币找零;保留下来的 1010 元纸币足以服务之后支付 2020 元的顾客,所以其余 99 名顾客均可接待。

样例 4

见附件中的 change4.in 与 change4.ans。

该样例满足测试点 44 的限制条件。

样例 5

见附件中的 change5.in 与 change5.ans。

该样例满足测试点 88 的限制条件。

数据范围

对于全部的测试数据,保证:

  • 1≤n≤1051\le n\le 10^5;
  • 对于任意 1≤i≤n1\le i\le n,ai∈{10,20,50}a_i\in\{10,20,50\}。
测试点编号n≤n\le特殊性质
1111无
2,32,31818
4,54,510310^3
6610510^5A
77BC
88C
9,109,10无
  • 特殊性质 A:保证 ai≠50a_i\ne 50;
  • 特殊性质 B:对于任意 1≤i≤n−11\le i\le n-1,保证 ai≤ai+1a_i\le a_{i+1};
  • 特殊性质 C:保证存在 1≤k≤n1\le k\le n,使得:
    • 对于任意 1≤i≤k1\le i\le k,ai≤20a_{i}\le 20;
    • 对于任意 k+1≤i≤nk+1\le i\le n,ai=50a_i=50。