D. Ian and Array Sorting
Problem
To thank Ian, Mary gifted an array
a
a
a of length
n
n
n to Ian. To make himself look smart, he wants to make the array in non-decreasing order by doing the following finitely many times: he chooses two adjacent elements
a
i
a_i
ai and
a
i
+
1
a_{i+1}
ai+1 (
1
≤
i
≤
n
−
1
1\le i\le n-1
1≤i≤n−1), and increases both of them by
1
1
1 or decreases both of them by
1
1
1. Note that, the elements of the array can become negative.
As a smart person, you notice that, there are some arrays such that Ian cannot make it become non-decreasing order! Therefore, you decide to write a program to determine if it is possible to make the array in non-decreasing order.
Input
The first line contains a single integer
t
t
t (
1
≤
t
≤
1
0
4
1 \leq t \leq 10^4
1≤t≤104) — the number of test cases. The description of test cases follows.
The first line of each test case consists of a single integer
n
n
n (
2
≤
n
≤
3
⋅
1
0
5
2\le n\le 3\cdot10^5
2≤n≤3⋅105) — the number of elements in the array.
The second line of each test case contains
n
n
n integers
a
1
,
a
2
,
…
,
a
n
a_1,a_2,\ldots,a_n
a1,a2,…,an (
1
≤
a
i
≤
1
0
9
1\le a_i\le 10^9
1≤ai≤109) — the elements of the array
a
a
a.
It is guaranteed that the sum of
n
n
n over all test cases does not exceed
3
⋅
1
0
5
3\cdot10^5
3⋅105.
Output
For each test case, output “YES” if there exists a sequence of operations which make the array non-decreasing, else output “NO”.
You may print each letter in any case (for example, “YES”, “Yes”, “yes”, “yEs” will all be recognized as positive answer).
Example
Input
5
3
1 3 2
2
2 1
4
1 3 5 7
4
2 1 4 3
5
5 4 3 2 1
Output
YES
NO
YES
NO
YES
Note
For the first test case, we can increase
a
2
a_2
a2 and
a
3
a_3
a3 both by
1
1
1. The array is now
[
1
,
4
,
3
]
[1, 4, 3]
[1,4,3].
Then we can decrease
a
1
a_1
a1 and
a
2
a_2
a2 both by
1
1
1. The array is now
[
0
,
3
,
3
]
[0, 3, 3]
[0,3,3], which is sorted in non-decreasing order. So the answer is “YES”.
For the second test case, no matter how Ian perform the operations,
a
1
a_1
a1 will always be larger than
a
2
a_2
a2. So the answer is “NO” and Ian cannot pretend to be smart.
For the third test case, the array is already in non-decreasing order, so Ian does not need to do anything.
Code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=3e5+10;
ll a[N];
void solve()
{
ll n;
cin>>n;
for(ll i=1;i<=n;i++) cin>>a[i];
if(n&1)
{
cout<<"YES"<<endl;
return;
}
for(ll i=2;i<n;i++)
{
if(a[i]!=a[i-1])
{
ll idx=a[i]-a[i-1];
a[i]-=idx;
a[i+1]-=idx;
}
}
if(a[n-1]<=a[n]) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
ll t;
cin>>t;
while(t--) solve();
return 0;
}