列表

详情


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;
}

上一题