Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
150968 | lrf820215 | 加工生产调度 | C++ | 解答错误 | 33 | 0 MS | 276 KB | 798 | 2024-06-10 10:27:11 |
#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; }