Submission #1271767

#TimeUsernameProblemLanguageResultExecution timeMemory
1271767cbnk32_tuandungPod starim krovovima (COCI20_psk)C++20
50 / 50
1 ms328 KiB
/*  _  _   ___   __  ___  ___  _  _  ___  __   ___     _   _  ___   ___  __   _____  _  _  ___       */
/* | || | /_\ \ / / / __|/ _ \| \| |/ __| \ \ / /_\   | | | |/ _ \ / __| \ \ / / _ \| \| |/ __|      */
/* | __ |/ _ \ V /  \__ \ (_) | .` | (_ |  \ V / _ \  | |_| | (_) | (__   \ V / (_) | .` | (_ |      */
/* |_||_/_/_\_\_|___|___/\___/|_|\_|\___|   \_/_/_\_\ _\___/ \___/ \___| _ \_/_\___/|_|\_|\___| ___  */
/* |   \| __| |_   _| || | /_\ \ / / |   \ / _ \_ _| |  \/  | __| \| | || | |  \/  |/ _ \| \| |/ __| */
/* | |) | _|    | | | __ |/ _ \ V /  | |) | (_) | |  | |\/| | _|| .` | __ | | |\/| | (_) | .` | (_ | */
/* |___/|___|   |_| |_||_/_/ \_\_|   |___/ \___/___| |_|  |_|___|_|\_|_||_| |_|  |_|\___/|_|\_|\___| */

#include <bits/stdc++.h>
using namespace std;

struct ly {
    int remain,maxVol,idx;
};

ly a[1009];
int res[1009];
int n;

bool cmp(ly nguyen, ly khanh) {
    if (nguyen.maxVol == khanh.remain) {
        if (nguyen.remain == khanh.remain) {
            return nguyen.idx < khanh.idx;
        } else {
            return nguyen.remain < khanh.remain;
        }
    } else {
        return nguyen.maxVol < khanh.maxVol;
    }
}

int main() {
	ios_base::sync_with_stdio(1+1==3);
	cout.tie(nullptr); cin.tie(nullptr);
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        cin >> a[i].remain >> a[i].maxVol;
        a[i].idx = i;
    }
    sort(a+1,a+1+n,cmp);
    // cout << "SORTED\n";
    // for (int i = 1; i <= n; ++i) {
    //     cout << a[i].idx << ". " << a[i].remain << " " << a[i].maxVol << endl;
    // }
    int cnt=0;
    for (int i = 1; i <= n; ++i) {
        for (int j=n;j>i;--j) {
            int oldAJ = a[j].remain;
            a[j].remain = min(a[j].maxVol,a[j].remain+min(a[j].maxVol-a[j].remain,a[i].remain));
            a[i].remain -= a[j].remain-oldAJ;
            if (a[i].remain == 0) {
                break;
            }
        }
        if (a[i].remain == 0) {
            ++cnt;
        }
        res[a[i].idx]=a[i].remain;
        // cout << a[i].remain << " ";
    }
    // for (int i = 1; i <= n; ++i) {
    //     if (a[i].remain == 0) {
    //         ++cnt;
    //     }
    //     else {
    //         for (int j = n; j > i; --j) {
    //             if (i==n) break;
    //             int oldAJ = a[j].remain;
    //             a[j].remain = min(a[j].maxVol,a[j].remain+min(a[j].maxVol-a[j].remain,a[i].remain));
    //             a[i].remain -= a[j].remain-oldAJ;
    //             if (a[i].remain == 0) {
    //                 break;
    //             }
    //         }
    //         if (a[i].remain == 0) {
    //             ++cnt;
    //         }
    //     }
    //     res[a[i].idx]=a[i].remain;
    // }
    cout << cnt << "\n";
    for (int i = 1; i <= n; ++i) {
        cout << res[i] << " ";
    }
}

/*
Như một siêu sao người Thái Bình đã từng nói:
    "Bằng một niềm tin thôi,
     Đi đi rồi sẽ tới
     Đời này được bao lâu?
     "thôi để mai" là đến khi nào?".
*/
#Verdict Execution timeMemoryGrader output
Fetching results...