CF121D Lucky Segments

题目描述

Petya 喜欢幸运数字。众所周知,幸运数字是指其十进制表示中只包含幸运数字 $4$ 和 $7$ 的正整数。例如,$47$、$744$、$4$ 是幸运数字,而 $5$、$17$、$467$ 不是。 Petya 有 $n$ 个区间 $[l_{1}, r_{1}]$,$[l_{2}, r_{2}]$,……,$[l_{n}, r_{n}]$。每次操作时,Petya 可以选择任意一个区间(假设是第 $i$ 个区间),将其替换为 $[l_{i}+1, r_{i}+1]$ 或 $[l_{i}-1, r_{i}-1]$。换句话说,每次操作可以将任意一个区间整体向左或向右平移一个单位距离。 Petya 称一个数字为“全满”数字,如果它属于每一个区间。也就是说,数字 $x$ 是全满数字,当且仅当对于任意 $i$($1 \leq i \leq n$),都有 $l_{i} \leq x \leq r_{i}$。 Petya 最多可以进行 $k$ 次操作。操作结束后,他会统计全满幸运数字的数量。请你求出他最多可以得到多少个全满幸运数字。

输入格式

第一行包含两个整数 $n$ 和 $k$($1 \leq n \leq 10^{5}$,$1 \leq k \leq 10^{18}$)——区间的数量和最多允许的操作次数。接下来的 $n$ 行,每行包含两个整数 $l_{i}$ 和 $r_{i}$($1 \leq l_{i} \leq r_{i} \leq 10^{18}$)。 请不要在 C++ 中使用 %lld 读取或输出 64 位整数,建议使用 %I64d。

输出格式

输出一行,表示答案。

说明/提示

在第一个样例中,Petya 将第二个区间向左移动两单位(变为 $[4, 7]$),此时数字 $4$ 成为全满数字。 在第二个样例中,Petya 将第一个区间向右移动两单位(变为 $[42, 47]$),将第二个区间向左移动三单位(变为 $[44, 71]$),此时数字 $44$ 和 $47$ 成为全满数字。 由 ChatGPT 4.1 翻译