Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
2148 | 大聪明 | 整数区间 | C++ | 通过 | 100 | 0 MS | 256 KB | 816 | 2019-11-09 17:25:42 |
#include<bits/stdc++.h> using namespace std; struct range { int from,to; //from开始,to结束 }a[10000]; bool cmp(range x,range y) //按结束排序 { return x.to<y.to; } int main() { int n,i,sum=0; cin>>n; for(i=0;i<n;i++) cin>>a[i].from>>a[i].to; sort(a,a+n,cmp); int x; for(i=0,x=-1;i<n;i++) //初始x的值,保证当下永远小于任意左端点 { //令x=-1可以使第一个区间与其他区间的操作相同。 if(x>=a[i].from) continue; //判断上一个右端点是否大于左端点,如果大于则则肯定包含标记号 x=a[i].to; //更新标记点 sum++; } cout<<sum; return 0; }