Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <map>
- using namespace std;
- const int Maxn = 100005;
- int t;
- int n, a;
- int s[Maxn];
- map <int, int> M;
- int res;
- bool Ok()
- {
- if (M.empty()) return true;
- map <int, int>::iterator st = M.begin(), en = M.end(); en--;
- return en->first - st->first <= a;
- }
- int main()
- {
- scanf("%d", &t);
- for (int tc = 1; tc <= t; tc++) {
- scanf("%d %d", &n, &a);
- for (int i = 0; i < n; i++)
- scanf("%d", &s[i]);
- res = 0;
- int r = 0;
- for (int l = 0; l < n; l++) {
- while (r < n && Ok()) { M[s[r]]++; r++; }
- int got = r - l - bool(!Ok());
- res = max(res, got);
- if (--M[s[l]] == 0) M.erase(s[l]);
- }
- printf("Case #%d: %d\n", tc, res);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment