fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = 1000005;
  4. int a[MAXN], b[MAXN], pos[MAXN];
  5. int n, m, q, x, y;
  6. int main() {
  7. ios::sync_with_stdio(false);
  8. cin.tie(0);
  9. cin >> n >> m >> q;
  10. for (int i = 1; i <= n; ++i) cin >> a[i];
  11. for (int i = 0; i < m; ++i) {
  12. cin >> b[i];
  13. pos[b[i]] = i;
  14. }
  15. vector<int> s(2 * m);
  16. for (int i = 0; i < m; ++i)
  17. s[i] = b[i];
  18. for (int i = 0; i < m; ++i)
  19. s[i + m] = b[i];
  20. map<vector<int>, bool> nxt;
  21. for (int i = 0; i < m; ++i){
  22. vector<int> v;
  23. for (int j = 0; j < m; ++j)
  24. v.push_back(s[i + j]);
  25. nxt[v] = true;
  26. }
  27. while (q--){
  28. cin >> x >> y;
  29. vector<int> d;
  30. for (int i = x; i <= y; ++i){
  31. if (pos[a[i]] < m)
  32. d.push_back(pos[a[i]]);
  33. }
  34. bool check = false;
  35. for (int i = 0; i + m <= (int)d.size(); ++i){
  36. vector<int> sub(d.begin() + i, d.begin() + i + m);
  37. if (nxt.count(sub)){
  38. check = true;
  39. break;
  40. }
  41. }
  42. cout << (check ? "YES\n" : "NO\n");
  43. }
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0.01s 7684KB
stdin
5 3 3
1 3 2 2 3 
1 2 3 
1 5 
2 5 
1 3 
stdout
NO
NO
NO