Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define int long long
  4.  
  5. #define pii pair<int, int>
  6.  
  7. #define x1 x1228
  8. #define y1 y1228
  9.  
  10. #define left left228
  11. #define right right228
  12.  
  13. #define pb push_back
  14. #define eb emplace_back
  15.  
  16. #define mp make_pair
  17.  
  18. #define ff first
  19. #define ss second
  20.  
  21. #define matr vector<vector<int> >
  22.  
  23. #define all(x) x.begin(), x.end()
  24.  
  25.  
  26. using namespace std;
  27. typedef long long ll;
  28. typedef long double ld;
  29.  
  30. const int maxn = 3e5 + 7, mod = 1e9 + 7, inf = 1e18, MAXN = 1e6 + 7;
  31. const double eps = 1e-9;
  32. mt19937 rnd(time(0));
  33. int n, m;
  34. vector<int> kek[maxn];
  35. int cnt[maxn];
  36.  
  37. int get(int id, int l1, int r1) {
  38. int l = lower_bound(all(kek[id]), l1) - kek[id].begin();
  39. int r = upper_bound(all(kek[id]), r1) - kek[id].begin() - 1;
  40. return r - l + 1;
  41. }
  42.  
  43. void solve() {
  44. cin >> n >> m;
  45. vector<int> have;
  46. for (int i = 0; i < n; ++i) {
  47. cin >> cnt[i];
  48. cnt[i] -= i;
  49. have.pb(cnt[i]);
  50. }
  51. sort(all(have));
  52. have.erase(unique(all(have)), have.end());
  53. for (int i = 0; i < n; ++i) {
  54. int id = lower_bound(all(have), cnt[i]) - have.begin();
  55. kek[id].pb(i);
  56. }
  57. for (int i = 0; i < m; ++i) {
  58. int l, r, x; cin >> l >> r >> x, --l, --r;
  59. int p = x - l;
  60. int id = lower_bound(all(have), p) - have.begin();
  61. if (id >= 0 && id < have.size() && have[id] == p) {
  62. cout << get(id, l, r) << '\n';
  63. } else {
  64. cout << "0\n";
  65. }
  66. }
  67. }
  68.  
  69. signed main() {
  70. #ifdef LOCAL
  71. freopen("TASK.in", "r", stdin);
  72. freopen("TASK.out", "w", stdout);
  73. #else
  74.  
  75. #endif // LOCAL
  76. ios_base::sync_with_stdio(false);
  77. cin.tie(0);
  78. cout.precision(20);
  79. cout << fixed;
  80. int t = 1;
  81. for (int i = 0; i < t; ++i)
  82. solve();
  83. return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement