Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define int long long
- const int N = 200200;
- const int LOG = 18;
- int n, m;
- int sparse[LOG][N];
- int log_2[N];
- int sparsemax(int l, int r){
- int p = log_2[r - l];
- return max(sparse[p][l], sparse[p][r - (1 << p)]);
- }
- signed main(){
- int n, m;
- cin >> n >> m;
- for (int i = 0; i < m; i++){
- int x; cin >> x;
- sparse[0][i] = x;
- }
- for (int i = 2; i < N; i++){
- log_2[i] = log_2[i / 2] + 1;
- }
- for (int i = 1; i <= LOG; i++){
- for (int kk = 0; kk + (1 << i) <= m; kk++){
- int left = sparse[i - 1][kk];
- int right = sparse[i - 1][kk + (1 << (i - 1))];
- sparse[i][kk] = max(left, right);
- //cout << sparse[i][kk] << ' ';
- }
- //cout << endl;
- }
- int tt; cin >> tt;
- while(tt--){
- int x1, y1, x2, y2, k;
- cin >> x1 >> y1 >> x2 >> y2 >> k;
- if (x1 > x2) swap(x1, x2);
- if (y1 > y2) swap(y1, y2);
- if (((y2 - y1) % k == 0) && ((x2 - x1) % k == 0)){
- int mx = sparsemax(y1 - 1, y2);
- //cout << mx << endl;
- int di = (n - x1)/k;
- int top = x1 + di * k;
- if (top <= mx){
- cout << "NO" << endl;
- }else cout << "YES" << endl;
- }else cout << "NO" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement