链接:
https://www.nowcoder.com/acm/contest/59/A
来源:牛客网
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
给你一个长为n的序列a,有m次操作
1.把区间[l,r]内所有x变成y
2.查询区间[l,r]内第k小值
输入描述:
第一行两个数n,m 第二行n个数表示序列a 后面m行 1 l r x y :把区间[l,r]中所有x变成y 2 l r k :查询区间[l,r]中的第k小值
输出描述:
对于每个询问,输出一个数表示答案
#include<bits/stdc++.h> using namespace std; int n, m; int a[1000 + 5]; int l, r, k, x, y, f; int main() { while (~scanf("%d%d", &n, &m)) { for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = 0; i < m; i++) { scanf("%d", &f); if (f == 1) { scanf("%d%d%d%d", &l, &r, &x, &y); for (int j = l - 1; j < r; j++) { if (a[j] == x) a[j] = y; } } else if (f == 2) { scanf("%d%d%d", &l, &r, &k); int s[1000 + 5]; int t = 0; memset(s, 0, sizeof(s)); for (int i = l - 1; i < r; i++) { s[t++] = a[i]; } sort(s, s+t); printf("%d\n", s[k-1]); } } } return 0; }
over....