poj 3168 Barn Expansion 排序

來源:互聯網
上載者:User

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=25e3+9;int n;bool use[maxn];struct{    int a,b,c,d;}data[maxn];struct A{    int key,down,up,id;    bool operator <(const A & xx) const    {        if(key==xx.key) return down<xx.down;        return key<xx.key;    }}a[maxn<<1];int main(){//    freopen("in.txt","r",stdin);    while(scanf("%d",&n)!=EOF)    {        for(int i=1;i<=n;i++)        {            scanf("%d %d",&data[i].a,&data[i].b);            scanf("%d %d",&data[i].c,&data[i].d);        }        memset(use,0,sizeof(use));        for(int i=1;i<=n;i++)        {            a[i*2-1].key=data[i].a;            a[i*2-1].down=data[i].b;            a[i*2-1].up=data[i].d;            a[i*2].key=data[i].c;            a[i*2].down=data[i].b;            a[i*2].up=data[i].d;            a[i*2].id=a[i*2-1].id=i;        }        sort(a+1,a+n+n+1);        for(int i=1,j;i<=n+n;i=j)        {            for(j=i;j<=n+n;j++)            if(a[i].key!=a[j].key) break;            int up=a[i].up;            for(int k=i+1;k<j;k++)            {                if(a[k].down<=up)                use[a[k].id]=use[a[k-1].id]=1;                up=max(up,a[k].up);            }        }        for(int i=1;i<=n;i++)        {            a[i*2-1].key=data[i].b;            a[i*2-1].down=data[i].a;            a[i*2-1].up=data[i].c;            a[i*2].key=data[i].d;            a[i*2].down=data[i].a;            a[i*2].up=data[i].c;            a[i*2].id=a[i*2-1].id=i;        }        sort(a+1,a+n+n+1);        for(int i=1,j;i<=n+n;i=j)        {            for(j=i;j<=n+n;j++)            if(a[i].key!=a[j].key) break;            int up=a[i].up;            for(int k=i+1;k<j;k++)            {                if(a[k].down<=up)                use[a[k].id]=use[a[k-1].id]=1;                up=max(up,a[k].up);            }        }        int ans=0;        for(int i=1;i<=n;i++) ans+=!use[i];        cout<<ans<<endl;    }    return 0;}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.