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;
}

Download