Cod sursa(job #1026754)

Utilizator SpiriFlaviuBerbecariu Flaviu SpiriFlaviu Data 11 noiembrie 2013 22:31:13
Problema Pachete Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <algorithm>

#define INF 2000000001

using namespace std;

ifstream fin("pachete.in");
ofstream fout("pachete.out");

struct punct
{
    long long x,y;
};
punct p[50001];
int n,xs,ys;

double panta(punct A)
{
    return (A.x - xs)/(A.y-ys);
}

bool cmp(punct A, punct B)
{
    return panta(A) < panta(B);
}


int main()
{

    fin>>n;
    fin>>xs>>ys;
    for(int i=1;i<=n;i++)
        fin>>p[i].x>>p[i].y;
    sort(p+1,p+1+n,cmp);
    int sol = 0;
    for(int i=1;i<=n;i++)
    {
        punct pmax, pmin;
        pmax.x = -INF, pmax.y = -INF, pmin.x = INF, pmin.y = INF;

        while(panta(p[i+1]) == panta(p[i]))
        {

            if(p[i].x > pmax.x)
                pmax.x = p[i].x;
            if(p[i].x < pmin.x)
                pmin.x = p[i].x;
            if(p[i].y > pmax.y)
                pmax.y = p[i].y;
            if(p[i].y < pmin.y)
                pmin.y = p[i].y;
            i++;
        }
        if(xs < pmax.x && xs > pmin.x && ys < pmax.y && ys > pmin.y)
            sol+=2;
        else ++sol;
    }
    fout<<sol<<'\n';



    fin.close();
    fout.close();
    return 0;
}