Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <algorithm>
- const int N = 20;
- struct Task {
- int s, p, idx;
- bool operator< (const Task &t) const {
- return p > t.p || p == t.p && s > t.s;
- }
- } tasks[N];
- int n;
- void input() {
- std::ifstream fin("input.txt");
- fin >> n;
- for (int i = 0; i < n; ++i) {
- fin >> tasks[i].s >> tasks[i].p;
- tasks[i].idx = i + 1;
- }
- }
- int check_order() {
- int serv = 0, proc1 = 0, proc2 = 0;
- for (size_t i = 0; i < n; ++i) {
- serv = std::max(serv, proc1) + tasks[i].s;
- proc1 = serv + tasks[i].p;
- if (proc1 > proc2) {
- std::swap(proc1, proc2);
- }
- }
- return proc2;
- }
- void solve() {
- std::ofstream fout("output.txt");
- std::sort(tasks, tasks + n);
- fout << check_order() << std::endl;
- for (size_t i = 0; i < n; ++i) {
- fout << tasks[i].idx << " ";
- }
- }
- int main() {
- input();
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment