Thứ Ba, 3 tháng 5, 2022

SETS C++

#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();
}

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.