QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#12128. 西瓜

Statistics

Lazy Batyr 一年四季都爱吃西瓜。此外,他非常善于交际且友好。因此,他有 $K$ 个可靠的朋友也就不足为奇了。

目前,Batyr 有 $n$ 个西瓜,第 $i$ 个西瓜的重量为 $a_i$。Batyr 厌倦了独自吃西瓜,所以他决定把所有的西瓜分给他的 $K$ 个朋友,使得每个西瓜恰好分给其中一个朋友。

Batyr 认为如果满足以下条件,西瓜的分配就是公平的:

  1. 每个朋友至少收到一个西瓜;
  2. 对于每个朋友,他们收到的西瓜重量之和不超过分给其他朋友的西瓜重量之和。

当然,Batyr 可能无法按照他想要的方式分配现有的西瓜。在这种情况下,他可以从经验丰富的卖家 Abdou 那里购买几个(可能为零)西瓜。Abdou 有 $m$ 个西瓜,第 $i$ 个西瓜的重量为 $b_i$。

请告诉 Batyr 他最少需要从 Abdou 那里购买多少个西瓜才能实现公平分配,并输出具体的分配方案。如果不存在公平分配,则输出 $-1$。

输入格式

第一行包含三个整数 $n, m$ 和 $K$ ($3 \le n \le 5 \cdot 10^5, 0 \le m \le 5 \cdot 10^5, 3 \le K \le 5 \cdot 10^5$),分别表示 Batyr 拥有的西瓜数量、Abdou 拥有的西瓜数量以及 Batyr 的朋友数量。

第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^9$),表示 Batyr 的西瓜重量。

第三行包含 $m$ 个整数 $b_1, b_2, \dots, b_m$ ($1 \le b_i \le 10^9$),表示 Abdou 的西瓜重量。

输出格式

第一行包含一个整数,表示购买西瓜的最少数量,如果不存在公平分配,则输出 $-1$。如果存在答案,则额外输出两行(注意第 3 个子任务不需要打印这两行):

第二行包含 $n$ 个整数 $c_1, c_2, \dots, c_n$ ($1 \le c_i \le K$),其中第 $i$ 个数字 $c_i$ 表示第 $i$ 个 Batyr 的西瓜应该分给哪位朋友(朋友编号从 $1$ 到 $K$)。

第三行包含 $m$ 个整数 $d_1, d_2, \dots, d_m$ ($0 \le d_i \le K$),其中第 $i$ 个数字 $d_i$ 的含义如下: 如果 $d_i = 0$,则不需要购买 Abdou 的第 $i$ 个西瓜; 否则,$d_i$ 表示如果购买了 Abdou 的第 $i$ 个西瓜,应将其分给哪位朋友。

如果有多种合适的答案,输出任意一种即可。

子任务

子任务 附加约束 分值
0 样例 0
1 $m = 0, a_i = a_{i+1} (1 \le i < n)$ 9
2 $a_i = a_{i+1} (1 \le i < n), b_j = b_{j+1} (1 \le j < m)$ 19
3 不需要打印西瓜的分配方案 24
4 $m = 0$ 20
5 $b_i = 1 (1 \le i \le m)$ 10
6 18

样例

样例 1

输入

3 2 4
3 2 3
10 9

输出

2
4 3 3
1 2

样例 2

输入

5 2 4
4 9 3 52 7
35 5

输出

1
2 3 1 1 4
4 0

样例 3

输入

4 1 3
1 2 4 10
2

输出

-1

说明

在第一个样例中,Batyr 将不得不购买 Abdou 的两个西瓜。然后西瓜可以这样分配:朋友们得到的西瓜重量之和分别为 $[10, 9, 5, 3]$,这被认为是公平的分配。

在第二个样例中,只需购买 Abdou 的第一个西瓜。然后西瓜可以这样分配:朋友们得到的西瓜重量之和分别为 $[55, 4, 9, 42]$,这被认为是公平的分配。

在第三个样例中,可以证明不存在公平的分配。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.