【0】做题心得 - 2025 NOIP #68 - T1【链表】
哦赛时就差一点过了,使用
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10,M=3e3+10;
int n,a[N],nxt[N],prv[N];
pair<int,int>c[N];
int main(){
freopen("latency.in","r",stdin);
freopen("latency.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
while(T--){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i], prv[i]=i-1, nxt[i]=i+1,
c[i].first=a[i], c[i].second=i;
sort(c+1,c+n+1,greater<pair<int,int>>());
bool fl=1;
for(int i=1;i<=n;i++){
int di=c[i].second;
if((prv[di]>=1&&prv[di]<=n&&abs(a[prv[di]]-a[di])<=1)||
(nxt[di]>=1&&nxt[di]<=n&&abs(a[nxt[di]]-a[di])<=1)){
nxt[prv[di]]=nxt[di];
prv[nxt[di]]=prv[di];
nxt[di]=prv[di]=0;
}else if(c[i].first)fl=0;
}
cout<<(fl?"YES\n":"NO\n");
}
return 0;
}