大佬,求帮忙,acwing上全过,洛谷上全运行错误,呜呜
查看原帖
大佬,求帮忙,acwing上全过,洛谷上全运行错误,呜呜
1054045
S296685913楼主2024/3/26 22:47

相同的题在acwing测试点全过,洛谷上一个都运行不起来,谢谢大佬们

#include<iostream>
#include<stdio.h>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

int n, k, sj[5000010];
int res;

int findk(int* nums, int l, int r, int k)
{
    if (l >= r)
        return nums[l];
    int partition = nums[l], i = l, j = r;
    while (i < j) 	//等于时会停止进行交换 
    {
        while (nums[j] >= partition&& i < j)
            j--;
        while (nums[i] <= partition && i < j)
            i++;
        if (i < j)
        {
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
    }
    int tmp = nums[l];
    nums[l] = nums[j];
    nums[j] = tmp;
    if (j == k)
    {
        return nums[j];
    }
    if(j>k)
        findk(nums, l, j-1, k);
    else
        findk(nums, j+1, r, k);
}

int main()
{
    cin >> n >> k;
    for (int i = 0;i < n;i++)
    {
        scanf("%d",sj[i]);
    }
    res=findk(sj, 0, n - 1, k);
    cout << res;
}
2024/3/26 22:47
加载中...