TWO - Lập lịch trên 2 máy
Tác giả: ladpro98
Ngôn ngữ: C++
#include <iostream>
#include <cstdio>
#include <algorithm>
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
const int N = 100005;
using namespace std;
int n;
struct II {
int X, Y, id;
} a[N];
bool cmp(const II &a, const II &b)
{return min(a.X, b.Y) < min(a.Y, b.X);}
int main() {
ios :: sync_with_stdio(0); cin.tie(0);
cin >> n;
FOR(i, 0, n) cin >> a[i].X;
FOR(i, 0, n) cin >> a[i].Y;
FOR(i, 0, n) a[i].id = i + 1;
sort(a, a + n, cmp);
int startA = 0, startB = 0, finishA = 0, finishB = 0;
FOR(i, 0, n) {
startA = finishA;
finishA = startA + a[i].X;
startB = max(finishA, finishB);
finishB = startB + a[i].Y;
}
cout << finishB << endl;
FOR(i, 0, n) cout << a[i].id << ' '; cout << endl;
return 0;
}