Submission #614230

#TimeUsernameProblemLanguageResultExecution timeMemory
614230PlurmStranded Far From Home (BOI22_island)C++11
0 / 100
129 ms15660 KiB
#include <bits/stdc++.h> using namespace std; int s[200005]; vector<int> g[200005]; int n, m; bool check(int u) { priority_queue<pair<int, int>> pq; int allies = s[u]; set<int> alliance = {u}; for (int v : g[u]) pq.push({-s[v], v}); while (!pq.empty()) { int vnxt = pq.top().second; pq.pop(); if (alliance.count(vnxt)) continue; if (s[vnxt] <= allies) { allies += s[vnxt]; alliance.insert(vnxt); for (int v : g[vnxt]) { if (!alliance.count(v)) { pq.push({-s[v], v}); } } } } return alliance.size() == n; } int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) { scanf("%d", s + i); } for (int i = 0; i < m; i++) { int u, v; scanf("%d%d", &u, &v); g[u].push_back(v); g[v].push_back(u); } if (n > 2000) { int lo = 1; int hi = n; int mid; while (lo < hi) { mid = (lo + hi) / 2; if (check(mid)) { lo = mid + 1; } else { hi = mid; } } if (check(lo)) { for (int i = 1; i <= n; i++) printf("1"); printf("\n"); } else { for (int i = 1; i <= lo; i++) printf("1"); for (int i = lo + 1; i <= n; i++) printf("0"); printf("\n"); } } else { for (int i = 1; i <= n; i++) { if (check(i)) printf("1"); else printf("0"); } printf("\n"); } return 0; }

Compilation message (stderr)

island.cpp: In function 'bool check(int)':
island.cpp:28:26: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   28 |   return alliance.size() == n;
      |          ~~~~~~~~~~~~~~~~^~~~
island.cpp: In function 'int main()':
island.cpp:31:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |   scanf("%d%d", &n, &m);
      |   ~~~~~^~~~~~~~~~~~~~~~
island.cpp:33:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |     scanf("%d", s + i);
      |     ~~~~~^~~~~~~~~~~~~
island.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |     scanf("%d%d", &u, &v);
      |     ~~~~~^~~~~~~~~~~~~~~~
#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...