本地跑没问题,而且本地过了2个点(1个一个样例,讨论里有人发了一个点,下载的一个点)
在洛谷IDE跑就有问题,我该怎么办qaq
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAX=1e4+9;
struct Node{
int tim,id;
}_[MAX];
//bool cmp(Node a,Node b){
// return a.tim<b.tim;
//}
int n,a[MAX],b[MAX],ans[MAX];
void paixu(){for(int i=1;i<=n-1;i++)for(int j=i+1;j<=n;j++)if(_[i].tim>_[j].tim)swap(_[i],_[j]);}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)cin>>b[i];
for(int i;i<=n;i++)_[i].tim=min(a[i],b[i]),_[i].id=i;
// sort(_+1,_+n+1,cmp);
paixu();
// for(int i=1;i<=n;i++)cout<< _[i].tim <<" ---"<<endl;
int num_ans1=0,num_ans2=n+1;//a从头,b从尾
for(int i=1;i<=n;i++){
if(a[_[i].id]==_[i].tim)ans[++num_ans1]=_[i].id;
else if(b[_[i].id]==_[i].tim)ans[--num_ans2]=_[i].id;
}int a1=0,b1=0;
for(int i=1;i<=n;i++){
a1+=a[ans[i]];
if(b1<a1)b1=a1;
b1+=b[ans[i]];
}cout<<max(a1,b1)<<endl;
for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
cout<<endl;
return 0;
}