Submission #228687

#TimeUsernameProblemLanguageResultExecution timeMemory
228687osaaateiasavtnlHiring (IOI09_hiring)C++14
64 / 100
1595 ms24660 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ii pair <int, int> #define app push_back #define all(a) a.begin(), a.end() #define bp __builtin_popcount #define ll long long #define mp make_pair #define f first #define s second #define Time (double)clock()/CLOCKS_PER_SEC const int N = 5e5 + 7; int n, W; struct Chel { int s, q, i; } a[N]; bool comp(Chel a, Chel b) { //return (a.s/a.q) < (b.s/b.q); return a.s * b.q < b.s * a.q; } bool compq(int i, int j) { return a[i].q < a[j].q; } bool ls(ii a, ii b) { return a.f * b.s < b.f * a.s; } int posq[N]; bool used[N]; signed main() { #ifdef HOME freopen("input.txt", "r", stdin); #else #define endl '\n' ios_base::sync_with_stdio(0); cin.tie(0); #endif cin >> n >> W; for (int i = 0; i < n; ++i) { cin >> a[i].s >> a[i].q; a[i].i = i; } sort(a, a + n, comp); vector <ii> t; for (int i = 0; i < n; ++i) t.app(mp(a[i].q, i)); sort(all(t)); for (int i = 0; i < n; ++i) posq[t[i].s] = i + 1; int ans = 0; ii pay = {0, 1}; int ans_i = -1; for (int i = 0; i < n; ++i) { used[posq[i]] = 1; int sum = 0, k = 0; for (int j = 1; j <= n; ++j) { if (used[j]) { sum += t[j - 1].f; ++k; if (sum * a[i].s <= W * a[i].q) { ii np = mp(sum * a[i].s, a[i].q); if (k > ans || (k == ans && ls(np, pay))) { ans = k; pay = np; ans_i = i; } } } } } cout << ans << endl; if (ans > 0) { vector <ii> t; for (int i = 0; i <= ans_i; ++i) { t.app(mp(a[i].q, a[i].i)); } sort(all(t)); for (int i = 0; i < ans; ++i) cout << t[i].s + 1 << ' '; cout << endl; } }
#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...