Solution 按照 \(p[i]\) 进行分段,如果某个 \(k\) 不存在 \(p[i]=k\),那么就把 \(i,i+1\) 分割开 处理出每一段的左端点和右端点 进而处理出每段的最小值和最大值 如果存在第 \(i\) 段的最大值大于第 \(i+1\) 段的最小值,就输出 NO #include <bits/stdc++.h> using namespace std; #define reset(x) memset(x,0,sizeof x) const int N = 1005; i…