QOJ.ac

QOJ

Limite de temps : 2.0 s Limite de mémoire : 256 MB Points totaux : 100

#17843. 调度器

Statistiques

在多任务操作系统 “Squirrel OS” 中运行着 $N$ 个进程。这 $N$ 个进程中的每一个都有一个给定的优先级 $p_i$,这会影响该进程被运行的频率。由于系统在单处理器中只有一个核心来运行程序,因此它面临着在考虑进程优先级的情况下,在这些进程之间分配 CPU 时间的挑战。

确定在每个时刻运行哪个进程的算法可以描述如下。对于每个进程,除了优先级 $p_i$ 之外,还有一个计数器 $t_i$。最初所有 $t_i$ 都等于 $0$。

然后每秒钟:

  1. 选择 $p_i + t_i$ 值最大的进程。
  2. 在这些进程中,选择编号 $i$ 最小的进程。
  3. 选中的进程 $i$ 运行一秒钟。
  4. 对于选中的进程 $i$,将 $t_i$ 的值设为 $0$。
  5. 对于所有其他进程,将 $t_i$ 的值增加 $1$。

模拟该操作系统运行 $T$ 秒的过程,并计算每个进程运行了多少秒。假设所有计算和进程之间的切换都是瞬间完成的,因此每个进程的运行时间(以秒为单位)是一个整数。

输入格式

第一行包含两个空格分隔的整数 $N$ 和 $T$ — 操作系统中的进程数($1 \le N \le 10^5$)和需要模拟的秒数($1 \le T \le 10^6$)。

第二行包含 $N$ 个空格分隔的整数 $p_i$ — 进程的优先级($0 \le p_i \le 10^5$)。

输出格式

输出唯一的一行,包含 $N$ 个空格分隔的整数 — 表示每个进程运行了多少秒。

样例

输入样例 1

3 10
3 4 5

输出样例 1

3 3 4

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.