提交时间:2024-06-10 10:27:11

运行 ID: 150968

#include<bits/stdc++.h> using namespace std; int n; int a[1005]; int b[1005]; int best[1005]; struct NodeType{ int no; bool group; int time; bool operator<(const NodeType &s)const{ return time<s.time; } }; int solve(){ int i,j,k; NodeType c[n]; for(i=0;i<n;i++){ c[i].no=i; c[i].group=(a[i]<=b[i]); c[i].time=a[i]<=b[i]?a[i]:b[i]; } sort(c,c+n); j=0;k=n-1; for(i=0;i<n;i++){ if(c[i].group==1) best[j++]=c[i].no; else best[k--]=c[i].no; } int T1=0; int T2=0; for(i=0;i<n;i++){ T1+=a[best[i]]; T2=max(T1,T2)+b[best[i]]; } return T2; } int main(){ cin>>n; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<n;i++)cin>>b[i]; cout<<solve()<<endl; for(int i=0;i<n;i++){ printf("%d ",best[i]+1); } return 0; }