Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void solve()
- {
- ll n, k;
- ll sum = 0, MAX = 0, cnt = 0;
- cin >> n >> k;
- vector<ll> v(n);
- map<ll, ll> m;
- for (auto &i : v)
- cin >> i;
- ll f = 0, l = 0;
- while (l < n and f < n)
- {
- if (!m[v[l]] and sum + v[l] <= k)
- {
- sum += v[l];
- m[v[l]]++;
- cnt++, l++;
- MAX = max(MAX, cnt);
- }
- else if (m[v[l]] and l < n)
- {
- cnt++;
- m[v[l]]++;
- l++;
- MAX = max(MAX, cnt);
- }
- else if (m[v[f]] - 1 == 0)
- {
- sum -= v[f];
- m[v[f++]]--;
- cnt--;
- }
- else
- {
- f++, cnt--;
- }
- }
- cout << MAX << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment