Advertisement
Guest User

корневуха отборочный зкш

a guest
Feb 7th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <set>
  5. #include <queue>
  6. #define ll long long
  7. using namespace std;
  8. const int maxn = 100001;
  9. const int pr = 1000;
  10.  
  11. int m[500001];
  12. int main()
  13. {
  14. ll n, k;
  15. cin >> n >> k;
  16. for (int i = 0; i < n; i++)
  17. cin >> m[i];
  18. vector <bool> u;
  19.  
  20. int l = 0;
  21. while (l < n - 1)
  22. {
  23. bool g = true;
  24. for (int j = l; j < l + pr - 1 && j<n - 1 && g; j++)
  25. if (m[j] >= m[j + 1]) g = false;
  26. u.push_back(g);
  27. l += pr-1;
  28. }
  29.  
  30. for (int i = 0; i < k; i++)
  31. {
  32. int a, b;
  33. cin >> a >> b;
  34. a--, b--;
  35. bool g = true;
  36. int curpr = 0;
  37. while (curpr < a)
  38. curpr += pr-1;
  39. if (curpr < a) curpr += pr-1;
  40. if (curpr < b)
  41. {
  42. for (int j = a; j < curpr && g; j++)
  43. if (m[j] >= m[j + 1]) g = false;
  44. // дошли до ближайшей curpr
  45. while (curpr + pr-1 <= b && g)
  46. {
  47. if (!u[curpr / (pr-1)])
  48. g = false;
  49. curpr += pr-1;
  50. }
  51. // возможно надо вычесть из curpr pr
  52. for (int j = curpr; j < b && g; j++)
  53. if (m[j] >= m[j + 1]) g = false;
  54. }
  55. else
  56. {
  57. for (int j = a; j < b && g; j++)
  58. if (m[j] >= m[j + 1]) g = false;
  59. }
  60. if (g && a!=b) cout << 'Y';
  61. else cout << 'N';
  62. }
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement