Cod sursa(job #2379578)

Utilizator VasileAmbreiajVasile Ambreiaj VasileAmbreiaj Data 13 martie 2019 20:35:21
Problema Pachete Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.63 kb
///TEST

#include <bits/stdc++.h>

using namespace std;

ifstream f("pachete.in");
ofstream g("pachete.out");

int n,ox,oy,i,j,nrd;

struct str{
    int x,y,l;
    bool fol;
}v[5][50001];

bool cond(str a, str b){
    if(a.x!=b.x)
        return a.x<b.x;
    return a.y<b.y;
}

int intre(int x, int y, int x2, int y2){
    int x1=ox,y1=oy;

    if(x1>x2)
        swap(x1,x2);
    if(y1>y2)
        swap(y1,y2);

    if(x>=x1 && x<=x2 && y>=y1 && y<=y2)
        return 1;
    return 0;
}

int main()
{
    f>>n>>ox>>oy;
    nrd=n;
    int x,y;

    for(i=1;i<=n;++i){
        f>>x>>y;

        if(x>=ox && y>=oy){
            ++v[1][0].l;
            v[1][v[1][0].l].x=x;
            v[1][v[1][0].l].y=y;
        } else if(x>=ox && y<=oy){
            ++v[2][0].l;
            v[2][v[2][0].l].x=x;
            v[2][v[2][0].l].y=y;
        } else if(x<=ox && y<=oy){
            ++v[3][0].l;
            v[3][v[3][0].l].x=x;
            v[3][v[3][0].l].y=y;
        } else if(x<=ox && y>=oy){
            ++v[4][0].l;
            v[4][v[4][0].l].x=x;
            v[4][v[4][0].l].y=y;
        }
    }

    for(i=1;i<=4;++i){
        sort(v[i]+1,v[i]+v[i][0].l+1,cond);
        int q;

        for(j=1;j<=v[i][0].l;++j){
            if(v[i][j].fol)
                continue;
            for(q=1;q<=v[i][0].l;++q){
                if(q==j || v[i][q].fol)
                    continue;
                if(intre(v[i][q].x,v[i][q].y,v[i][j].x,v[i][j].y)){
                    --nrd;
                    v[i][q].fol=1;
                }
            }
        }
    }

    g<<nrd;

    return 0;
}