fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. #define int long long
  5. const int inf = 1e15;
  6. const int MOD1 = 1e9 + 123;
  7.  
  8.  
  9. void solve() {
  10. int n, q; cin >> n >> q;
  11. vector<int> a(n+1), b(n+1);
  12. vector<vector<int>> sum1(5, vector<int>(n+1, 0)), sum2(5, vector<int>(n+1, 0)), tmp(n+1, vector<int>(5, 0));
  13.  
  14. for (int i = 1; i <= n; i++) cin >> a[i];
  15. for (int i = 1; i <= n; i++) cin >> b[i];
  16.  
  17. random_device rd;
  18. mt19937 gen(rd());
  19. uniform_int_distribution<int> dist(1LL, 1e11);
  20.  
  21. for (int i = 1; i <= n; i++) {
  22. for (int j = 0; j < 5; j++) {
  23. tmp[i][j] = dist(gen);
  24. }
  25. }
  26. for (int i = 0; i < 5; i++) {
  27. for (int j = 1; j <= n; j++) {
  28. sum1[i][j] = tmp[a[j]][i];
  29. sum2[i][j] = tmp[b[j]][i];
  30. sum1[i][j] += sum1[i][j-1];
  31. sum2[i][j] += sum2[i][j-1];
  32. }
  33. }
  34.  
  35. while (q--) {
  36. int L, R, l, r; cin >> L >> R >> l >> r;
  37. l--, L--;
  38. if (R-L != r-l) {
  39. cout << "No\n";
  40. continue;
  41. }
  42. bool ok = true;
  43. for (int i = 0; i < 5 and ok; i++) {
  44. if ((sum1[i][r] - sum1[i][l]) != (sum2[i][R] - sum2[i][L])) ok = false;
  45. }
  46. if (ok) cout << "Yes\n";
  47. else cout << "No\n";
  48. }
  49. }
  50.  
  51. signed main()
  52. {
  53. ios_base::sync_with_stdio(false);
  54. cin.tie(0);
  55. cout.tie(0);
  56. int t = 1;
  57. // cin >> t;
  58. for (int i = 1; i <= t; i++) {
  59. solve();
  60. }
  61. }
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
Standard output is empty