제출 #328756

#제출 시각아이디문제언어결과실행 시간메모리
328756luciocfHiring (IOI09_hiring)C++14
40 / 100
1590 ms6508 KiB
#include <bits/stdc++.h> #define ff first #define ss second using namespace std; typedef long long ll; typedef pair<int, int> pii; const int maxn = 5e5+10; int n; ll w; struct S { int s, q, ind; } a[maxn]; bool comp(S a, S b) { return a.s*b.q < b.s*a.q; } int main(void) { scanf("%d %lld", &n, &w); for (int i = 1; i <= n; i++) { scanf("%d %d", &a[i].s, &a[i].q); a[i].ind = i; } sort(a+1, a+n+1, comp); int ans = 0; priority_queue<pii> fila; ll soma = 0; double soma_s = 0, ans_soma = 0; vector<int> V; for (int i = 1; i <= n; i++) { if (1ll*a[i].s > w) continue; fila.push({a[i].q, i}); soma += 1ll*a[i].q; soma_s += 1.00*a[i].s; while (1ll*a[i].s*soma > 1ll*w*a[i].q) { soma -= 1ll*fila.top().ff; soma_s -= 1.00*a[i].s/(1.00*a[i].q)*a[fila.top().ss].q; fila.pop(); } if (fila.size() > ans || (fila.size() == ans && soma_s < ans_soma)) { ans = fila.size(), ans_soma = soma_s; V.clear(); while (!fila.empty()) { V.push_back(fila.top().ss); fila.pop(); } for (auto x: V) fila.push({a[x].q, x}); } } printf("%d\n", ans); assert(ans == V.size()); for (auto x: V) printf("%d\n", a[x].ind); }

컴파일 시 표준 에러 (stderr) 메시지

hiring.cpp: In function 'int main()':
hiring.cpp:62:19: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   62 |   if (fila.size() > ans || (fila.size() == ans && soma_s < ans_soma))
      |       ~~~~~~~~~~~~^~~~~
hiring.cpp:62:41: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   62 |   if (fila.size() > ans || (fila.size() == ans && soma_s < ans_soma))
      |                             ~~~~~~~~~~~~^~~~~~
In file included from /usr/include/c++/9/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:33,
                 from hiring.cpp:1:
hiring.cpp:80:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |  assert(ans == V.size());
      |         ~~~~^~~~~~~~~~~
hiring.cpp:28:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   28 |  scanf("%d %lld", &n, &w);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~
hiring.cpp:32:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   32 |   scanf("%d %d", &a[i].s, &a[i].q);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...