Submission #1002836

#TimeUsernameProblemLanguageResultExecution timeMemory
1002836TobHiring (IOI09_hiring)C++14
100 / 100
522 ms31152 KiB
#include <bits/stdc++.h> #define F first #define S second #define all(x) x.begin(), x.end() #define pb push_back using namespace std; typedef long long ll; typedef pair <ll, ll> pii; const double prec = 1e-9; int main () { ll n; double w; cin >> n >> w; vector <pair <pair <double, double>, int> > v; for (int i = 0; i < n; i++) { double a, b; cin >> a >> b; v.pb({{a/b, b}, i+1}); } sort(all(v)); set <pair <double, int> > s; int cnt = 0, res = 0, ix = 0; double sum = 0, msum = 1e13; for (int i = 0; i < v.size(); i++) { auto it = v[i]; s.insert({it.F.S, it.S}); double lim = w / it.F.F; sum += it.F.S; cnt++; while (sum - lim > prec) { auto p = s.end(); --p; sum -= (*p).F; cnt--; s.erase(p); } if (cnt > res) { res = cnt; msum = sum * it.F.F; ix = i+1; } if (cnt == res && sum * it.F.F < msum) { msum = sum * it.F.F; ix = i+1; } } sum = 0; s.clear(); cout << res << "\n"; for (int i = 0; i < v.size(); i++) { auto it = v[i]; s.insert({it.F.S, it.S}); double lim = w / it.F.F; sum += it.F.S; cnt++; while (sum - lim > prec) { auto p = s.end(); --p; sum -= (*p).F; cnt--; s.erase(p); } if (i+1 == ix) { for (auto itt : s) { cout << itt.S << "\n"; } break; } } return 0; }

Compilation message (stderr)

hiring.cpp: In function 'int main()':
hiring.cpp:33:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::pair<double, double>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |  for (int i = 0; i < v.size(); i++) {
      |                  ~~^~~~~~~~~~
hiring.cpp:61:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::pair<double, double>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |  for (int i = 0; i < v.size(); i++) {
      |                  ~~^~~~~~~~~~
#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...