Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define endl '\n'
- vector<int> t;
- struct kol_mon
- {
- deque<int> kol;
- int sz;
- kol_mon(bool czy_min)
- {
- if(czy_min)
- sz = -1;
- else
- sz = 1;
- }
- void add(int i)
- {
- while(!kol.empty() && kol.back() < t[i] * sz)
- kol.pop_back();
- kol.emplace_back(t[i] * sz);
- }
- void remove(int i)
- {
- if(kol.front() == t[i] * sz)
- kol.pop_front();
- }
- int get() { return kol.front() * sz; }
- };
- int main()
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- int p, n;
- cin >> p >> n;
- t.resize(n);
- kol_mon mini(1), maks(0);
- for(int &i : t)
- cin >> i;
- int wynik = 1;
- mini.add(0);
- maks.add(0);
- int i = 0, j = 0;
- while(i != n)
- {
- while(j != n && maks.get() - mini.get() <= p)
- {
- maks.add(++j);
- mini.add(++j);
- if(maks.get() - mini.get() <= p)
- wynik = max(wynik, i - j + 1);
- }
- maks.remove(i++);
- mini.remove(i++);
- }
- cout << wynik;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement