#include<bits/stdc++.h>
using namespace std;
struct doan
{
int a,b;
};
int n;long long i,dem=1;
doan d[1000005];
long long b[1000005];
void nhap()
{
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d\n",&d[i].a,&d[i].b);
}
}
bool ss(doan x, doan y)
{
if(x.b<y.b) return true;
if(x.b>y.b) return false;
if(x.a<y.a) return true;
if(x.a>y.a) return false;
return false;
}
void qs(long long l, long long r)
{
long long i=l;
long long j=r;
doan k=d[(l+r)/2];
while(i<=j)
{
while (ss(d[i],k)==true) i++;
while (ss(k,d[j])==true) j--;
if(i<=j)
{
swap(d[i],d[j]);
i++;j--;
}
}
if(l<j) qs(l,j);
if(i<r) qs(i,r);
}
void xuli()
{
qs(1,n);
// for(int i=1;i<=n;i++) cout << d[i].a << " " << d[i].b << endl;
dem=1;
b[dem]=d[1].b-1;
dem++;
b[dem]=d[1].b;
for(int i=2;i<=n;i++)
{
if(d[i].a>b[dem]) //doan i chua co so nao
{
dem++;
b[dem]=d[i].b-1;
dem++;
b[dem]=d[i].b;
}
else if(d[i].a>b[dem-1]) // doan i co 1 so
{
dem++;
b[dem]=d[i].b;
}
}
printf("%d\n",dem);
// for(int i=1;i<=dem;i++) printf("%d ",b[i]);
}
int main()
{
freopen("sets.inp","r",stdin);
freopen("sets.out","w",stdout);
nhap();
xuli();
}
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Thứ Ba, 3 tháng 5, 2022
SETS C++
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.