제출 #1255067

#제출 시각아이디문제언어결과실행 시간메모리
1255067madamadam3장애물 (IOI25_obstacles)C++20
24 / 100
73 ms9800 KiB
#include "obstacles.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; using vi = vector<int>; using vvi = vector<vi>; using vl = vector<ll>; using vvl = vector<vl>; using pi = pair<int, int>; #define FOR(i, a, b) for (int i = a; i < b; i++) #define ROF(i, a, b) for (int i = a; i >= b; i--) #define each(a, x) for (auto &a : x) #define all(x) (x).begin(), (x).end() #define bg(x) (x).begin() #define en(x) (x).end() #define rev(x) reverse(all(x)) #define sz(x) int((x).size()) #define srt(x) sort(all(x)) #define cnt(a, x) count(all(x), a) #define trace(x) each(a, (x)) cout << a << " " #define mp make_pair #define pb push_back #define lb lower_bound #define ub upper_bound struct DSU { int n; vi par, siz; DSU() {}; DSU(int N) { n = N; par.resize(n); siz.assign(n, 1); iota(all(par), 0); } int find(int v) { if (par[v] == v) return v; return par[v] = find(par[v]); } void unite(int a, int b) { a = find(a); b = find(b); if (a != b) { if (siz[a] < siz[b]) swap(a, b); par[b] = a; siz[a] += siz[b]; } } }; int n, m; DSU dsu; vi t, h; // vvi id; void initialize(vi T, vi H) { t = T; h = H; n = sz(T), m = sz(H); // id.assign(n, vi(m, -1)); // dsu = DSU(n*m); dsu = DSU(m); int cd = 0; // FOR(i, 0, n) { // FOR(j, 0, m) { // id[i][j] = cd++; // } // } // FOR(i, 0, n) { FOR(j, 0, m) { // if (T[i] <= H[j]) continue; if (T[n-1] <= H[j]) continue; // if (i > 0 && T[i-1] > H[j]) dsu.unite(id[i][j], id[i-1][j]); // if (j > 0 && T[i] > H[j-1]) dsu.unite(id[i][j], id[i][j-1]); if (j > 0 && T[n-1] > H[j-1]) dsu.unite(j, j-1); // if (i < n - 1 && T[i+1] > H[j]) dsu.unite(id[i][j], id[i+1][j]); // if (j < m - 1 && T[i] > H[j+1]) dsu.unite(id[i][j], id[i][j+1]); if (j < m - 1 && T[n-1] > H[j+1]) dsu.unite(j, j+1); } // } return; } bool can_reach(int L, int R, int S, int D) { if (S > D) swap(S, D); // return dsu.find(id[0][S]) == dsu.find(id[0][D]); return dsu.find(S) == dsu.find(D); }
#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...