用struct(结构体数组)存取每个区间的左端点,用sort()对每个左端点排序,判断是否重合。
#include<iostream> #include<algorithm> #include<stdio.h> #include<queue> #define N 100000 using namespace std; struct qujian{ int left; int right; }qj[N]; int cmp(qujian x,qujian y){ return x.left<y.left; }//实现sort的从小到大排序 int main(){ int n,r,l,a,b,i,j; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d%d",&qj[i].left,&qj[i].right); } sort(qj+1,qj+1+n,cmp); l=qj[1].left; r=qj[1].right; for(i=2;i<=n;++i){ if(qj[i].left>r){ printf("no");return 0;} else if(qj[i].right>r) r=qj[i].right; } printf("%d %d\n",l,r); return 0; }
区间合并 (结构体数组)c++
最新推荐文章于 2024-05-11 16:13:07 发布