题目描述
在一次算法比赛中,有 n 个程序提交到了竞赛平台上,为每个程序打分需要两步:先编译,然后运行。
竞赛平台有两台服务器,一台只负责编译,另一台只负责运行,编译第 ii 个程序的时间为 ai,运行第 i个程序的时间为 bi。每台服务器在同一时刻只能处理一个任务。
在开始测试这些程序之前,小爱可以重新安排这些程序的计算顺序,请找到一个最好的顺序,尽快完成所有程序的测试任务。
这道题和之前做的评测队列非常接近,但是这里有个不同之处,重新安排程序的计算顺序,这里增加了难度,使其成为了甲组的难题!
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int n,p[200005];
struct node{
int a,b;
}z[200005];
bool cmp(node x,node y){
return min(y.b,x.a)<min(x.b,y.a);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){cin>>z[i].a>>z[i].b;
}
sort(z+1,z+n+1,cmp);
int s1=0,s2=0;
for(int i=1;i<=n;i++){
s1+=