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