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 翻译