Submission #877847

#TimeUsernameProblemLanguageResultExecution timeMemory
877847deadeye0Stranded Far From Home (BOI22_island)C++17
0 / 100
188 ms46036 KiB
#include <bits/stdc++.h> using namespace std; #define int long long using ll = long long; #define fi first #define si second #define ar array #define pb push_back typedef pair<int,int> pi; typedef tuple<int,int,int> ti; typedef vector<int> vi; template<typename T> bool chmin(T &a, T b){return (b < a) ? a = b, 1 : 0;} template<typename T> bool chmax(T &a, T b){return (b > a) ? a = b, 1 : 0;} void debug_out() {cerr<<endl;} template <typename Head, typename... Tail> void debug_out(Head _H, Tail... _T) {cerr<<" "<<to_string(_H);debug_out(_T...);} #define debug(...) cerr<<"["<<#__VA_ARGS__<<"]:",debug_out(__VA_ARGS__) const int N = 200010; int n, m; int s[N], p[N], vis[N], bad[N]; ll val[N]; vector<int> g[N]; vector<int> st[N]; int par(int x) {return p[x];} bool same(int x, int y) {return par(x) == par(y);} void merge(int x, int y) { x = par(x), y = par(y); if (st[x].size() < st[y].size()) swap(x, y); if (x == y) return; val[x] += val[y]; while (st[y].size()) { int v = st[y].back(); st[y].pop_back(); p[v] = x; st[x].pb(v); } } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin.exceptions(ios::badbit|ios::failbit); cin >> n >> m; for (int i = 0; i < n; ++i) { cin >> s[i]; val[i] = s[i]; p[i] = i; st[i] = vector<int>(1, i); } for (int i = 0; i < m; ++i) { int a, b; cin >> a >> b; --a, --b; g[a].pb(b); g[b].pb(a); } vector<int> order(n); iota(order.begin(), order.end(), 0); sort(order.begin(), order.end(), [&](int x, int y) { return s[x] < s[y]; }); for (auto i: order) { vis[i] = 1; sort(g[i].begin(), g[i].end(), [&](int x, int y) { return s[x] < s[y]; }); for (auto j: g[i]) { if (same(i, j)) continue; if (vis[j]) { if (val[par(i)] > val[par(j)]) { for (auto v: st[par(j)]) { bad[v] = 1; } } merge(i, j); } if (val[par(i)] >= s[j]) { merge(i, j); } } } for (int i = 0; i < n; ++i) { cout << (bad[i] ? 0 : 1); } cout << '\n'; return 0; }
#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...