Submission #722987

#TimeUsernameProblemLanguageResultExecution timeMemory
722987yahyobekabdunazarovStranded Far From Home (BOI22_island)C++17
10 / 100
276 ms15708 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define int long long using namespace std; const int MAX_N = 2e5 + 9; vector<int> adj[MAX_N], weights(MAX_N, 0); bool visited[MAX_N]; priority_queue <pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; void add_children(int u){ for(int i: adj[u]){ if(visited[i]) continue; visited[i] = 1; pq.push(make_pair(weights[i], i)); } } signed main() { int n, m, right = 0; cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> weights[i]; right += weights[i]; } for(int i = 0; i < m; i++){ int x, y; cin >> x >> y; adj[y].push_back(x); adj[x].push_back(y); } if(n <= 2000 && m <= 2000){ for(int i = 1; i <= n; i++){ int sum = weights[i]; visited[i] = 1; add_children(i); while(!pq.empty() && pq.top().ff <= sum){ sum += pq.top().ff; int u = pq.top().ss; pq.pop(); add_children(u); } cout << (sum >= right); pq = priority_queue <pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>(); fill(visited, visited + MAX_N, false); } } else{ int dp[n + 1]; dp[0] = 0; for(int i = 1; i <= n; i++){ dp[i] = dp[i - 1] + weights[i]; } int prev = 1; for(int i = 1; i <= n; i++){ prev = (prev && (dp[n] - dp[i - 1]) >= weights[i - 1]) ; cout << prev; } } }
#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...