fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void solve() {
  5. int n;
  6. cin >> n;
  7. vector<int> a(n);
  8. for (int i = 0; i < n; i++) {
  9. cin >> a[i];
  10. }
  11.  
  12. vector<int> inv;
  13. for (int i = 0; i < n - 1; i++) {
  14. if (a[i] > a[i + 1]) {
  15. inv.push_back(i);
  16. }
  17. }
  18.  
  19. if (inv.empty()) {
  20. cout << "YES\n";
  21. return;
  22. }
  23.  
  24. long long L = 0;
  25. for (int i : inv) {
  26. L = max(L, (long long)a[i] - a[i + 1]);
  27. }
  28.  
  29. long long R = 2e18;
  30. for (size_t i = 0; i < inv.size() - 1; i++) {
  31. int left = inv[i] + 1;
  32. int right = inv[i + 1];
  33.  
  34. long long mx_diff = -1;
  35. for (int j = left; j < right; j++) {
  36. mx_diff = max(mx_diff, (long long)a[j + 1] - a[j]);
  37. }
  38.  
  39. if (mx_diff == -1) {
  40. R = -1;
  41. break;
  42. }
  43. R = min(R, mx_diff);
  44. }
  45.  
  46. if (R != -1 && L <= R) {
  47. cout << "YES\n";
  48. } else {
  49. cout << "NO\n";
  50. }
  51. }
  52.  
  53. int main() {
  54. ios_base::sync_with_stdio(false);
  55. cin.tie(NULL);
  56. int t;
  57. cin >> t;
  58. while (t--) {
  59. solve();
  60. }
  61. return 0;
  62. }
Success #stdin #stdout 0s 5328KB
stdin
8
4
1 2 3 4
5
10 5 9 4 4
7
8 3 9 4 10 5 11
6
5 3 10 5 9 7
3
2 1 1
5
2 1 1 2 1
3
3 1 2
5
2 1 2 3 1
stdout
YES
NO
YES
NO
YES
YES
YES
NO