제출 #1306732

#제출 시각아이디문제언어결과실행 시간메모리
1306732muhammad-ahmadAlternating Heights (CCO22_day1problem1)C++20
0 / 25
861 ms4412 KiB
// #include <bits/stdc++.h> #include <iostream> #include <cmath> #include <algorithm> #include <map> #include <vector> #include <iomanip> #include <string> #include <queue> #include <set> #include <deque> #include <numeric> #include <stack> #include <chrono> using namespace std; void fast_io(){ // freopen("", "r", stdin); // freopen("", "w", stdout); ios::sync_with_stdio(0); cin.tie(); cout.tie(); cout << setprecision(9); } #define int long long #define endl '\n' #define all(v) (v).begin(), (v).end() #define rall(v) (v).rbegin(), (v).rend() #define fi first #define se second const int N = 3e3 + 5; vector<int> adj[N]; int vis[N]; bool dfs(int u){ int ans = 1; vis[u] = 1; for (auto v : adj[u]){ if (vis[v]){ return 0; } else { ans &= dfs(v); } } return ans; } void solve() { int n, k, q; cin >> n >> k >> q; int a[N] = {}, B[N] = {}; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++){ int l = i, r = n + 1; while (r - l > 1){ int mid = (l + r) / 2; for (int j = 0; j < N; j++){ vis[j] = 0; adj[j].clear(); } for (int j = i; j < mid; j++){ if ((j - i) % 2 == 0) adj[a[j]].push_back(a[j + 1]); else adj[a[j + 1]].push_back(a[j]); } if (dfs(a[i])) l = mid; else r = mid; } B[i] = l; } for (int i = 1; i <= q; i++){ int l, r; cin >> l >> r; if (B[l] >= r) cout << "YES" << endl; else cout << "NO" << endl; } return; } signed main() { fast_io(); srand(chrono::steady_clock::now().time_since_epoch().count()); int tc = 1; // cin >> tc; while (tc--) solve(); 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...