1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include <bits/stdc++.h> using namespace std; typedef long long ll;
const ll N = 2e5 + 10, mod = 1e9 + 7;
ll n, q, a[N], b[N], mp[N], suma[N], sumb[N];
int main() { mt19937 gen(time(0)); for (int i = 1; i <= 2e5; i++) if (!mp[i]) mp[i] = gen() % mod; scanf("%lld%lld", &n, &q); for (int i = 1; i <= n; i++) { scanf("%lld", &a[i]); a[i] = mp[a[i]]; suma[i] = suma[i - 1] + a[i]; } for (int i = 1; i <= n; i++) { scanf("%lld", &b[i]); b[i] = mp[b[i]]; sumb[i] = sumb[i - 1] + b[i]; } while (q--) { ll l, r, L, R; scanf("%lld%lld%lld%lld", &l, &r, &L, &R); if (suma[r] - suma[l - 1] == sumb[R] - sumb[L - 1] && r - l == R - L) printf("Yes\n"); else printf("No\n"); } return 0; }
|