测试点永远有一个RE
不知道怎么改
#include <bits/stdc++.h>
/*
abs(-4)------4[绝对值(整数)] fabs(-4.5344)------4.5344[绝对值(浮点数)] pow(2,3)------222[计算幂]
floor(4.8)------4[向下取整] ceil(4.8)------5[向上取整] round(4.8)------5[四舍五入]sqrt(9)------3[开根号] strlen(字符数组名)------获取字符数组的长度
strcat(a,b)------拼接字符数组 strcpy(a,b)------复制字符数组 strcmp(a,b)------字典型比较大小 sizeof(b)------查看数组的字节数
getline(cin,字符串名)------获取含空格的字符串 a.length()------获取字符长度 cin.get(a,255)------获取含空格的字符数组
struct------创建一个结构体的关键字 strcpy(a,b)------把后面的字符数组赋值给前面的字符数组
swap(a[i],a[j+1])------交换两数的位置 static int范围:-2147483647~2147483647 cnt----计数的变量 maxx----最大数的变量
minx----最小数的变量
srand(time(0)); int a; a=(rand()%(“最大”-“最小”+1))+“最小”; cout << a;
double a; cin >>a; cout << fixed << setprecision(2) << a << endl;
*/
using namespace std;
struct x{
int id;
int a;
int b;
}a[100005];
int n;
bool cmp(x t,x t2){
return max(t.a+t2.a+t2.b,t.a+t.b+t2.b)<=max(t2.a+t.a+t.b,t2.a+t2.b+t.b);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].a;
a[i].id=i;
}
for(int i=1;i<=n;i++){
cin>>a[i].b;
}
sort(a+1,a+1+n,cmp);
long long ha=a[1].a,hb=a[1].a+a[1].b;
for(int i=2;i<=n;i++){
ha+=a[i].a;
hb=max(ha,hb)+a[i].b;
}
cout<<hb<<endl;
for(int i=1;i<n;i++){
cout<<a[i].id<<' ';
}
cout<<a[n].id;
return 0;
}