Advertisement
Guest User

K

a guest
Apr 30th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.27 KB | None | 0 0
  1. #include <algorithm>
  2. #include <bitset>
  3. #include <cmath>
  4. #include <cstdio>
  5. #include <cstring>
  6. #include <deque>
  7. #include <functional>
  8. #include <iomanip>
  9. #include <iostream>
  10. #include <queue>
  11. #include <map>
  12. #include <numeric>
  13. #include <set>
  14. #include <sstream>
  15. #include <stack>
  16. #include <utility>
  17. #include <vector>
  18.  
  19. #define INF 1000000000
  20. #define FOR(i, a, b) for(int i=int(a); i<int(b); i++)
  21. #define FORC(cont, it) for(typeof((cont).begin()) it = (cont).begin(); it != (cont).end(); it++)
  22. #define pb push_back
  23.  
  24. using namespace std;
  25.  
  26. typedef long long ll;
  27. typedef pair<int, int> ii;
  28. typedef vector<int> vi;
  29. typedef vector<ii> vii;
  30. typedef vector<vi> vvi;
  31.  
  32. #define maxN 1000000
  33.  
  34. int N, W, K, lo[maxN], hi[maxN], a[maxN];
  35.  
  36. int main() {
  37.     while (scanf("%d %d %d", &N, &W, &K) && N) {
  38.         bool v = true;
  39.         int llo = 0, rlo = 0, lhi = 0, rhi = 0;
  40.         FOR(i, 0, N) {
  41.             scanf("%d", a + i);
  42.             while (rlo > llo && a[lo[rlo - 1]] >= a[i]) {
  43.                 rlo--;
  44.             }
  45.             lo[rlo++] = i;
  46.             while (lo[llo] < i - W) llo++;
  47.             while (rhi > lhi && a[hi[rhi - 1]] <= a[i]) {
  48.                 rhi--;
  49.             }
  50.             hi[rhi++] = i;
  51.             while (hi[lhi] < i - W) lhi++;
  52.             if (a[lo[llo]] + K<a[i] || a[hi[lhi]] - K>a[i]) v = false;
  53.         }
  54.         if (v) printf("Yes.\n");
  55.         else printf("No.\n");
  56.     }
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement