Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <bitset>
- #include <cmath>
- #include <cstdio>
- #include <cstring>
- #include <deque>
- #include <functional>
- #include <iomanip>
- #include <iostream>
- #include <queue>
- #include <map>
- #include <numeric>
- #include <set>
- #include <sstream>
- #include <stack>
- #include <utility>
- #include <vector>
- #define INF 1000000000
- #define FOR(i, a, b) for(int i=int(a); i<int(b); i++)
- #define FORC(cont, it) for(typeof((cont).begin()) it = (cont).begin(); it != (cont).end(); it++)
- #define pb push_back
- using namespace std;
- typedef long long ll;
- typedef pair<int, int> ii;
- typedef vector<int> vi;
- typedef vector<ii> vii;
- typedef vector<vi> vvi;
- #define maxN 1000000
- int N, W, K, lo[maxN], hi[maxN], a[maxN];
- int main() {
- while (scanf("%d %d %d", &N, &W, &K) && N) {
- bool v = true;
- int llo = 0, rlo = 0, lhi = 0, rhi = 0;
- FOR(i, 0, N) {
- scanf("%d", a + i);
- while (rlo > llo && a[lo[rlo - 1]] >= a[i]) {
- rlo--;
- }
- lo[rlo++] = i;
- while (lo[llo] < i - W) llo++;
- while (rhi > lhi && a[hi[rhi - 1]] <= a[i]) {
- rhi--;
- }
- hi[rhi++] = i;
- while (hi[lhi] < i - W) lhi++;
- if (a[lo[llo]] + K<a[i] || a[hi[lhi]] - K>a[i]) v = false;
- }
- if (v) printf("Yes.\n");
- else printf("No.\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement