Submission #703257

#TimeUsernameProblemLanguageResultExecution timeMemory
703257finn__Hiring (IOI09_hiring)C++17
0 / 100
1 ms468 KiB
#include <bits/stdc++.h> using namespace std; #define N 500 struct Worker { int64_t s, q; size_t i; }; Worker y[N]; bool compare_worker(Worker const &a, Worker const &b) { return a.s * b.q > a.q * b.s; } int main() { size_t n; int64_t w; cin >> n >> w; for (size_t i = 0; i < n; ++i) { cin >> y[i].s >> y[i].q; y[i].i = i; } sort(y, y + n, compare_worker); long double c = y[0].s, min_c = DBL_MAX; Worker *p1 = y, *p2 = y + 1, *best1 = 0, *best2 = 0; while (p2 < y + n) { if (c * p1->q + p2->q * p1->s > w * p1->q) { c -= p1->s; c *= p1->q / (p1 + 1)->q; ++p1; } else { c += p2->q / p1->q * p1->s; ++p2; } if (p2 - p1 > best2 - best1 || (p2 - p1 == best2 - best1 && c < min_c)) best1 = p1, best2 = p2, min_c = c; } cout << best2 - best1 << '\n'; while (best1 < best2) cout << best1->i + 1 << '\n', best1++; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...