Submission #123056

#TimeUsernameProblemLanguageResultExecution timeMemory
123056mechfrog88Lightning Rod (NOI18_lightningrod)C++14
40 / 100
2058 ms262144 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #pragma GCC optimize("unroll-loops,no-stack-protector") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace __gnu_pbds; using namespace std; template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long ll; typedef long double ld; vector <ll> id; ll find(ll i){ if (id[i] <= -1) return i; return id[i] = find(id[i]); } void unio(ll i,ll j){ ll a = find(i); ll b = find(j); if (a == b) return; id[a] += id[b]; id[b] = a; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); ll n; cin >> n; vector <pair<ll,ll>> arr(n); id.resize(n,-1); for (int z=0;z<n;z++){ cin >> arr[z].first >> arr[z].second; } for (int z=0;z<n;z++){ if (id[z] >= 0) continue; ll x1 = arr[z].first-arr[z].second; ll x2 = arr[z].first+arr[z].second; for (int x=0;x<n;x++){ if (id[x] >= 0) continue; ll x3 = arr[x].first-arr[x].second; ll x4 = arr[x].first+arr[x].second; if ((x1 <= x3 && x4 <= x2)){ if (id[x] >= 0) continue; unio(z,x); } } } ll ans = 0; for (int z=0;z<n;z++){ if (id[z] < 0) ans++; } cout << ans << endl; }
#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...