Cod sursa(job #1026762)

Utilizator SpiriFlaviuBerbecariu Flaviu SpiriFlaviu Data 11 noiembrie 2013 22:47:37
Problema Pachete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

struct punct
{
        int 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 (A.x - xs) * (B.y - ys)  <(B.x - xs) *(A.y - ys) ;
}


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 = p[i], pmin = p[i];

        while(  (p[i].x - xs) * (p[i].y - ys)  == (p[i+1].x - xs) *(p[i+1].y - ys) )
        {

            if(p[i+1].x > pmax.x)
                pmax.x = p[i+1].x;
            if(p[i+1].x < pmin.x)
                pmin.x = p[i+1].x;
            if(p[i+1].y > pmax.y)
                pmax.y = p[i+1].y;
            if(p[i+1].y < pmin.y)
                pmin.y = p[i+1].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;
}