NC232172. 另类排序
描述
输入描述
输出描述
示例1
输入:
4 3 3 3 2 1 4 3 1 2 3 4 5 2 5 1 2 3 4 5 4 1 2 3 4 4
输出:
NO YES YES YES
Java 解法, 执行用时: 51ms, 内存消耗: 10796K, 提交时间: 2022-08-01 11:33:18
import java.util.Arrays; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); int t=sc.nextInt(); while (t-->0) { int n=sc.nextInt(); int x=sc.nextInt(); int a[]=new int[n+1]; int b[]=new int[n+1]; for (int i = 1; i <= n; i++) { a[i] = sc.nextInt(); b[i] = a[i]; } Arrays.sort(a); int l=0; for (int i = n-x+1; i <=x; i++) { l=i; if (b[i]!=a[i]) { System.out.println("NO"); break; } } if (b[l]==a[l]) System.out.println("YES"); } } }
C 解法, 执行用时: 2ms, 内存消耗: 292K, 提交时间: 2021-12-18 20:50:44
#include<stdio.h> long long a[100005],b[100005]; void qsort(int l,int r) { int mid = a[ (l+r)/2 ]; int i=l,j=r,temp; while(i<=j) { while(a[i]<mid) i++; while(a[j]>mid) j--; if(i<=j) { temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j--; } } if(i<r) qsort(i,r); if(j>l) qsort(l,j); } int main() { int t; scanf("%d",&t); while(t--) { int n,x,i; scanf("%d%d",&n,&x); for(i=1;i<=n;i++) { scanf("%lld",&b[i]); a[i]=b[i]; } int w=0; qsort(1,n); if(2*x<=n-1) printf("YES\n"); else { w=0; for(i=n-x+1;i<=x;i++) { if(a[i]!=b[i]) { w=1; break; } } if(w==0) printf("YES\n"); else printf("NO\n"); } } return 0; }
C++ 解法, 执行用时: 3ms, 内存消耗: 472K, 提交时间: 2021-12-19 10:51:38
#include<bits/stdc++.h> using namespace std; const int N = 100005; int a[N],b[N]; int n,x; void check(){ cin>>n>>x; for(int i=1;i<=n;i++){ cin>>a[i]; b[i]=a[i]; } sort(a+1,a+1+n); for(int i=n-x+1;i<=x;i++){ if(b[i]!=a[i]){ cout<<"NO"<<endl; return; } } cout<<"YES"<<endl; } int main(){ int t; cin>>t; int n,x; while(t--){ check(); } return 0; }