有两个RE不知道哪里错了,求助一下,谢谢!!
查看原帖
有两个RE不知道哪里错了,求助一下,谢谢!!
819682
Exile_Code楼主2023/7/17 10:12
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <list>
#include <string>
#include <cmath>
#include <bitset>

vector<int>nums; int k;
int part_quick(int l,int  r) {
	int key = nums[(l + r) >> 1];
	swap(nums[key], nums[r]);
	int i = l; int j;
	for ( j = l; j < r; j++) {
		if (nums[j] <= nums[r]) {
			swap(nums[i++], nums[j]);
		}
	}	
	swap(nums[i], nums[r]);
	return i;
}

void quick(int l, int r) {
	if (r <= l)return;
	int q = part_quick( l, r);
	if (q == k) {
		cout << nums[k] << endl;
		exit(0);
	}
	else if (q < k) quick(q+1,r);
	else quick(l,q-1);
}
int main() {
	int n; cin >> n>>k;
	nums.resize(n);
	for (int i = 0; i < n; i++) {
		scanf("%d", &nums[i]);
	}
	quick(0, n - 1);
	return 0;
}
2023/7/17 10:12
加载中...