-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path#P1630.cpp
80 lines (73 loc) · 1.69 KB
/
#P1630.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+6;
const int INF = 0x3cccf;
int r,n;
int a[N],b[N],c[N],d[N],e[N],f[N];
bool cmp(int x,int y){
return x > y;
}
signed main(){
cin >> r;
while (r--){
bool flag1 = 1,flag2 = 1,flag3 = 1,flag4 = 1;
cin >> n;
for (int i = 1;i<=n;i++){
cin >> a[i];
b[i] = a[i];
}
sort(a+1,a+n+1);
sort(b+1,b+n+1,cmp);
for (int i = 1;i<=n;i++){
if (i % 2 == 1){
c[i] = a[(i + 1) / 2];
}
else{
c[i] = b[((n / 2) - i / 2) + 1];
}
}
for (int i = 1;i<=n;i++){
if (i % 2 == 0){
d[i] = a[((n / 2) - i / 2) + 1];
}
else{
d[i] = b[(i + 1) / 2];
}
}
for (int i = 1;i<=n;i++){
if (i % 2 == 1){
e[i] = a[(i + 1) / 2];
}
else{
e[i] = b[((n / 2) - i / 2) + 1];
s}
}
for (int i = 1;i<=n;i++){
if (i % 2 == 0){
f[i] = a[i / 2];
}
else{
f[i] = b[((n / 2) - i / 2)];
}
}
for (int i = 1;i<=n-2;i++){
if (!(c[i + 1] > c[i] and c[i + 1] > c[i + 2]) and !(c[i + 1] < c[i + 2] and c[i + 1] < c[i])) flag1 = 0;
}
for (int i = 1;i<=n-2;i++){
if (!(d[i + 1] > d[i] and d[i + 1] > d[i + 2]) and !(d[i + 1] < d[i] and d[i + 1] < d[i + 2])) flag2 = 0;
}
for (int i = 1;i<=n-2;i++){
if (!(e[i + 1] > e[i] and e[i + 1] > e[i + 2]) and !(e[i + 1] < e[i + 2] and e[i + 1] < e[i])) flag3 = 0;
}
for (int i = 1;i<=n-2;i++){
if (!(f[i + 1] > f[i] and f[i + 1] > f[i + 2]) and !(f[i + 1] < f[i + 2] and f[i + 1] < f[i])) flag4 = 0;
}
if (flag1 or flag2 or flag3 or flag4) cout << "Yes" << endl;
else cout << "No" << endl;
flag1 = 1,flag2 = 1,flag3 = 1,flag4 = 1;
for (int i = 1;i<=n;i++){
a[i] = b[i] = c[i] = d[i] = e[i] = f[i] = 0;
}
}
return 0;
}