提交时间:2024-03-02 19:22:36

运行 ID: 134804

#include<bits/stdc++.h> using namespace std; const int N = 1010; struct P { int a,b,pos; bool operator <(const P &M)const{ if((a<b && M.a<M.b) || (a==b && M.a==M.b) || (a>b && M.a>M.b)) { if(a<=b) return a < M.a; else return b > M.b; } else return a-b < M.a-M.b; } }p[N]; int main() { int n,time = 0; cin >> n; for(int i=0;i<n;i++) { int a; cin >> a; p[i].a = a,p[i].pos = i+1; } for(int i=0;i<n;i++) { int b; cin >> b; p[i].b = b; } sort(p,p+n); int a_time = p[0].a,b_time = p[0].a + p[0].b; for(int i=1;i<n;i++) { b_time = max(a_time+p[i].a,b_time)+p[i].b; a_time += p[i].a; } cout << b_time << endl; for(int i=0;i<n;i++) { cout << p[i].pos << ' '; } return 0; }