问题标题: 酷町堂:4217 合并区间

0
0
已解决
张恩泽
张恩泽
高级天翼
高级天翼

4217   合并区间 经验值:800

题目描述 Description

给出一个区间的集合,请合并所有重叠的区间。

输入描述 Input Description

第一行,一个整数n
接下来n行, 每行两个整数,x y,表示一个区间(x, y)

输出描述 Output Description

合并之后的所有区间,每行一个。按左端点从小到大排序

样例输入 Sample Input

4 1 3 2 6 8 10 15 18

样例输出 Sample Output

1 6 8 10 15 18

数据范围及提示 Data Size & Hint

10≤n≤1000

 

 

//CODE
//#pragma GCC optimize(3)
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct qj {
	int s, e;
}a[1005];
int n;
int end, start;
bool cmp (qj x, qj y) {
	return x.s < y.s;
}
int main() {
//	freopen ("题目名.in", "r", stdin);
//	freopen ("题目名.out", "w", stdout);
	cin >> n;
	for (int i = 1; i <= n; i ++) {
		cin >> a[i].s >> a[i].e;
	}
	sort (a + 1, a + n + 1, cmp);
	start = a[1].s;
	end = a[1].e;
	for (int i = 2; i <= n; i ++) {
		if (a[i].s <= end) {
			if (a[i].e > end) {
				end = a[i].e;
			}
			else {
				cout << start << ' ' << end << endl;
				start = a[i].s;
				end = a[i].e;
			}
		}
	}
//	fclose (stdin);
//	fclose (stdout);
	return 0;//好习惯!
}

求各位dalao找错!!

张恩泽在2020-11-07 12:32:23追加了内容

ding!

张恩泽在2020-11-07 12:41:21追加了内容
//CODE
//#pragma GCC optimize(3)
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct qj {
	int s, e;
	bool b;
}a[1005];
int n;
int end, start;
bool cmp (qj x, qj y) {
	return x.s < y.s;
}
int main() {
//	freopen ("题目名.in", "r", stdin);
//	freopen ("题目名.out", "w", stdout);
	cin >> n;
	for (int i = 1; i <= n; i ++) {
		cin >> a[i].s >> a[i].e;
		a[i].b = true;
	}
	for (int i = 2; i <= n; i ++) {
		if(a[i].s <= a[i-1].e && (a[i].e >= a[i-1].e || a[i-1].e >= a[i].e)) {
            a[i].s = a[i-1].s;
            a[i].e = max(a[i].e, a[i-1].e);
            a[i-1].b = false;
        }
	}
	for (int i = 1; i <= n; i ++) {
		if (a[i].b == true)
			cout << a[i].s << ' ' << a[i].e << endl;
	}
//	fclose (stdin);
//	fclose (stdout);
	return 0;//好习惯!
}

样例过了,但还是0分


0
我要回答