CF1637A Sorting Parts 题解

· · 题解

考虑将数列分成前后两段再排序的过程后,实质上只需判断左段的最大值不大于右段的最小值。

其实就是看数组是否已排序,若排序了则说明无法更改,没排序则满足条件,输出 YES 即可。

放代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
  ios::sync_with_stdio(false);
  int t; cin>>t;
  while(t--){
    int n; cin>>n;
    vector<int> v(n);
    for(auto &i:v)cin>>i;
    if(is_sorted(v.begin(),v.end()))cout<<"NO\n";
    else cout<<"YES\n";
  }
  return 0;
}