#include<bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while(t--){
string n;
cin >> n;
if(n.size()>=3&&n[0]=='1'&&n[1]=='0'&&n[2]!='0'&&stoi(n.substr(2))>=2)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
void solve(){
int n;
cin >> n;
vector<int> a(n);
for(int i=0;i<n;i++)
cin >> a[i];
int l = a[0], r = a[0]; // 初始化左边界和右边界为第一个乘客坐的座位号
bool ok = true; // 用于检查乘客是否遵循了规定的标志
for(int i = 1; i < n; i++) {
if(a[i] == l - 1) // 如果当前座位号正好在左边界的左边
l--; // 扩展左边界
else if(a[i] == r + 1) // 如果当前座位号正好在右边界的右边
r++; // 扩展右边界
else {
ok = false; // 如果当前座位号既不在左边界左边,也不在右边界右边,说明规定未被遵循
break; // 发现违反规定的座位,退出循环
}
}
if(ok)
cout << "YES" << endl; // 如果所有座位都遵循了规定,则输出 "YES"
else
cout << "NO" << endl; // 否则,输出 "NO"
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;
cin >> t;
while(t--){
solve();
}
return 0;
}
-
初始化:
n = 5
(座位数和乘客数)a = [5, 4, 2, 1, 3]
(乘客座位选择的顺序)l = 5, r = 5
(初始左边界和右边界)
-
逐步检查:
- 第一个乘客坐在座位 5(设置
l = 5, r = 5
)。 - 第二个乘客坐在座位 4:
4
是5
的左邻座位,更新左边界l = 4
。
- 第三个乘客坐在座位 2:
2
不在4
左邻座位,也不在5
右邻座位,违反规定。- 标记
ok = false
,退出循环。
结果: "NO"
- 第一个乘客坐在座位 5(设置
测试用例 2
解释:
-
初始化:
n = 3
(座位数和乘客数)a = [2, 3, 1]
(乘客座位选择的顺序)l = 2, r = 2
(初始左边界和右边界)
-
逐步检查:
- 第一个乘客坐在座位 2(设置
l = 2, r = 2
)。 - 第二个乘客坐在座位 3:
3
是2
的右邻座位,更新右边界r = 3
。
- 第三个乘客坐在座位 1:
1
是2
的左邻座位,更新左边界l = 1
。
结果: "YES"
- 第一个乘客坐在座位 2(设置
测试用例 3
解释:
-
初始化:
n = 4
(座位数和乘客数)a = [2, 3, 1, 4]
(乘客座位选择的顺序)l = 2, r = 2
(初始左边界和右边界)
-
逐步检查:
- 第一个乘客坐在座位 2(设置
l = 2, r = 2
)。 - 第二个乘客坐在座位 3:
3
是2
的右邻座位,更新右边界r = 3
。
- 第三个乘客坐在座位 1:
1
是2
的左邻座位,更新左边界l = 1
。
- 第四个乘客坐在座位 4:
4
是3
的右邻座位,更新右边界r = 4
。
结果: "YES"
- 第一个乘客坐在座位 2(设置
测试用例 4
解释:
-
初始化:
n = 5
(座位数和乘客数)a = [1, 2, 3, 5, 4]
(乘客座位选择的顺序)l = 1, r = 1
(初始左边界和右边界)
-
逐步检查:
- 第一个乘客坐在座位 1(设置
l = 1, r = 1
)。 - 第二个乘客坐在座位 2:
2
是1
的右邻座位,更新右边界r = 2
。
- 第三个乘客坐在座位 3:
3
是2
的右邻座位,更新右边界r = 3
。
- 第四个乘客坐在座位 5:
5
不是3
的右邻座位,也不是1
的左邻座位,违反规定。- 标记
ok = false
,退出循环。
结果: "NO"
- 第一个乘客坐在座位 1(设置