ans

liujunhao 2023-11-29 20:14:21 2023-11-29 20:15:09 8 返回题目

鹅... 有亿点长

#include<bits/stdc++.h>

using namespace std;

int k=0,best=0;

int a[10010],b[10010];

int m[10010],shu[10010],last[10010];

int main(){

int n;

scanf("%d", &n);

for(int i=1;i<=n;i++){
	
	scanf("%d", &a[i]);
	
	shu[i]=i;
	
}

for(int i=1;i<=n;i++){
	
	scanf("%d", &b[i]);
	
	if(a[i]>b[i])m[i]=b[i];
	
	else m[i]=a[i];
	
}

int t;

for(int i=1;i<=n-1;i++){
	
	for(int j=i+1;j<=n;j++){
		
		if(m[i]>m[j]){
			
			t=m[i];
			
			m[i]=m[j];
			
			m[j]=t;
			
			t=shu[i];
			
			shu[i]=shu[j];
			
			shu[j]=t;
			
		}
		
	}	
	
}

int l=1,r=n;

for(int i=1;i<=n;i++){
	
	if(m[i]==b[shu[i]]){
		
		last[r]=shu[i];
		
		r--;
		
	}
	
	else{
		
		last[l]=shu[i];
		
		l++;
		
	}
	
}

for(int i=1;i<=n;i++){
	
	k+=a[last[i]];
	
	if(best<k)best=k;
	
	best+=b[last[i]];
	
}

cout<<best<<"\n";

for(int i=1;i<=n;i++)printf("%d ", last[i]);

return 0;

}

{{ vote && vote.total.up }}