OpenJudge

N:编程填空:实现特定功能的数据结构

总时间限制:
1000ms
内存限制:
6556kB
描述

实现一个具有下述功能的类。

#include <iostream>
#include <set>
using namespace std;
// 在此处补充你的代码
int main()
{
	int t;
	cin >> t;
	MySet<int> stInt;
	int a[100];
	while(t--) {
		int n;
		cin >> n;
		for(int i = 0;i < n; ++i )
			cin >> a[i];
		MySet<int> stInt(a,a+n);
		MyPrint(stInt.begin(),stInt.end()); //输出全部内容
		cout << endl;
		int s,e;
		cin >> s >> e; // 后面要输出位于 s 和 e 之间的元素
		pair<MySet<int>::iterator, MySet<int>::iterator> p;
		p  = stInt.FindInterval(s,e);
		if( p.first != p.second) {
			MyPrint(p.first,p.second);
			cout << endl;
		}
		else
			cout << "Interval Not Found" << endl;
		cin >> n;
		MySet<double,greater<double> > stDouble;
		for( int i = 0;i < n; ++i)	{
			double d;
			cin >> d;
			stDouble.insert(d);
		}
		MyPrint(stDouble.begin(),stDouble.end());
		cout << endl;
		double w;
		cin >> w;
		cout << * stDouble.upper_bound(w) << endl;
	}
}
输入
第一行是整数t,表明数据组数

每组数据有4行。
第一行先是整数n(n < 100),后面跟着n个整数。
第二行是两个整数s和e,表示从n个整数中,找出大于s且小于e的全部元素。
第三行先是整数m(m < 100), 后面跟着m个浮点数。
第四行是一个浮点数w,表示在m个浮点数里,找出小于w的最大元素。

输入中所有整数都小于10000
输出
对于每组输入数据:
输出四行:
第一行:对输入第一行列出的n个整数,从小到大将其输出,但是重复的元素只留下一个。
第二行:从小到大输出所有大于s且小于e的元素,同样,重复的元素只留下一个。如果找不到这样的元素,就输出"Interval Not Found"。
第三行:从大到小输出输入第三行中的m个浮点数, 重复的元素只留下一个。
第四行:输出m个浮点数里,小于w的最大元素。数据确保能找到这样的元素。
样例输入
2
7 1 2 3 2 4 4 5
2 5
8 1.5 2.5 3.4 3.4 4.3 4.9 8.2 4.9
3.7
7 1 2 3 2 4 4 5
7 8
8 1.5 2.5 3.4 3.4 4.3 4.9 8.2 4.9
10
样例输出
1 2 3 4 5
3 4
8.2 4.9 4.3 3.4 2.5 1.5
3.4
1 2 3 4 5
Interval Not Found
8.2 4.9 4.3 3.4 2.5 1.5
8.2
全局题号
6999
提交次数
107
尝试人数
29
通过人数
27