练 习 题

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int p(int a[], int l, int r) {
	int v = a[r];
	int i = l - 1;
	for (int j = l; j < r; j++) {
		if (a[j] >= v) {
			i++;
			swap(a[i], a[j]);
		}
	}
	swap(a[i+1], a[r]);
	return i + 1;
}
int fi(int a[], int l, int r, int k) {
	if (l == r) return a[l];
	int s = p(a, l, r);
	int b = s - l + 1;
	if (b == k) return a[s];
	else if (b > k) return fi(a, l, s-1, k);
	else return fi(a, s+1, r, k-b);
}

int main() {
	int n, k;
	cin >> n >> k;
	int a[100000];
	for (int i = 0; i < n; i++) cin >> a[i];
	cout << fi(a, 0, n-1, k) << endl;
	return 0;
}
cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

int main() {
	int n;
	cin >> n;
	
	int s[1000], e[1000];
	for (int i = 0; i < n; ++i) {
		cin >> s[i] >> e[i];
	}
	
	for (int i = 0; i < n - 1; ++i) {
		for (int j = 0; j < n - i - 1; ++j) {
			if (s[j] > s[j + 1]) {
				swap(s[j], s[j + 1]);
				swap(e[j], e[j + 1]);
			}
		}
	}
	int ms = s[0], me = e[0];
	bool f = true;
	for (int i = 1; i < n; ++i) {
		if (s[i] <= me) {
			me = max(me, e[i]);
		} else {
			f = false;
			break;
		}
	}
	if (f==true) {
		cout << ms << " " << me << endl;
	} else {
		cout << "no" << endl;
	}
	return 0;
}
相关推荐
张健11564096483 分钟前
使用信号量限制并发数量
开发语言·c++
jc062010 分钟前
6.1云原生之Docker
c++·docker·云原生
Mrlxl.cn1 小时前
计算机网络——网络层
c语言·数据结构·计算机网络·考研
d111111111d2 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
寒秋花开曾相惜2 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
叶子野格3 小时前
《C语言学习:指针》12
c语言·开发语言·c++·学习·visual studio
Jiangxl~3 小时前
IP数据云如何为不同行业提供精准IP查询与风险防控解决方案?
网络·网络协议·tcp/ip·算法·ai·ip·安全架构
Fuyo_11193 小时前
C++ 内存管理
c++·笔记
李伟_Li慢慢4 小时前
wolfram详解山峦算法
前端·算法
counting money4 小时前
prim算法最小生成树(java)
算法