诡异事件
  • 板块学术版
  • 楼主chrispang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/19 09:40
  • 上次更新2024/5/19 12:30:35
查看原帖
诡异事件
786127
chrispang楼主2024/5/19 09:40

吸引你点进来的是这个帖子的标题

p1923不是在快排分解的时候只分解其中一边的吗?可我为啥子还是60分,TLE了两个点。

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int n, k;
vector<int> vec;
vector<int> p1923(int left, int right)
{
    if (left == right) {
        cout << vec[left] << endl;
        exit(0);
    }
    int i, j, pivot;
    i = left, j = right, pivot = vec[left];

    while (i < j)
    {
        while (vec[j] >= pivot && i < j) j--;
        while (vec[i] <= pivot && i < j) i++;

        if (i < j)
        {
            swap(vec[i], vec[j]);
        }
    }
    swap(vec[i], vec[left]);
    if (i < k) p1923(i + 1, right);
    else if(i > k) p1923(left, i - 1);
    else {
        cout << vec[i] << endl;
        exit(0);
    }
    return vec;
}

int main()
{
    cin >> n >> k;
    for (int i = 0; i < n; i++)
    {
        int t;
        cin >> t;
        vec.push_back(t);
    }

    p1923(0, vec.size() - 1);
    return 0;
}
2024/5/19 09:40
加载中...