CF730I Olympiad in Programming and Sports

题目描述

伯兰国立大学有 $n$ 名学生。每个学生有两项技能,每项以一个数字表示:$a_{i}$——编程技能,$b_{i}$——体育技能。 现宣布即将举办一次编程与体育奥林匹克。因此,伯兰国立大学需要选出两支队伍:一支参加编程比赛,一支参加体育比赛。 编程队需要恰好选出 $p$ 名学生,体育队需要恰好选出 $s$ 名学生。每位学生不能同时属于两支队伍。 学校管理层认为,大学在奥林匹克中的实力等于两队实力之和:即编程队实力与体育队实力之和。每队的实力是其成员在对应领域的技能值之和,即编程队的实力为所有已选队员的 $a_{i}$ 之和,体育队的实力为所有已选队员的 $b_{i}$ 之和。 请你帮助伯兰国立大学选出两支队伍,使学校总实力最大。

输入格式

第一行包含三个正整数 $n$、$p$ 和 $s$($2 \leq n \leq 3000$,$p+s \leq n$),分别表示学生数量、编程队人数与体育队人数。 第二行包含 $n$ 个正整数 $a_{1}, a_{2}, \ldots, a_{n}$($1 \leq a_{i} \leq 3000$),表示第 $i$ 位学生的编程技能。 第三行包含 $n$ 个正整数 $b_{1}, b_{2}, \ldots, b_{n}$($1 \leq b_{i} \leq 3000$),表示第 $i$ 位学生的体育技能。

输出格式

第一行输出奥林匹克中学校能获得的最大总实力。 第二行输出 $p$ 个不同的正整数,表示编程队成员的编号。 第三行输出 $s$ 个不同的正整数,表示体育队成员的编号。 学生编号按照输入顺序,从 $1$ 到 $n$。第二行与第三行输出的数字需两两不同,输出顺序任意。 如果有多组方案都满足最大实力,输出其中任意一组即可。

说明/提示

由 ChatGPT 5 翻译