/* _ _ ___ __ ___ ___ _ _ ___ __ ___ _ _ ___ ___ __ _____ _ _ ___ */
/* | || | /_\ \ / / / __|/ _ \| \| |/ __| \ \ / /_\ | | | |/ _ \ / __| \ \ / / _ \| \| |/ __| */
/* | __ |/ _ \ 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 time | Memory | Grader output |
---|
Fetching results... |