Cod sursa(job #2457302)

Utilizator ianiIani Biro iani Data 17 septembrie 2019 10:01:08
Problema Pachete Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

pair<int,int> hq;

vector< pair<int,int> > c[5];

double panta(pair<int,int> a,pair<int,int> b)
{
    return (double)(hq.second-a.second)/(hq.first-a.first)<(double)(hq.second-b.second)/(hq.first-b.first);
}

bool colin(pair<int,int> a,pair<int,int> b,pair<int,int> c)
{
    if (a.first*b.second+c.first*a.second+b.first*c.second-c.first*b.second-b.first*a.second-c.first*a.second==0)
        return true;
    return false;
}

int main()
{
    int n,nrdrum=0,x,y;
    fin>>n>>x>>y;
    hq=make_pair(x,y);
    nrdrum=n;
    for (int i=1;i<=n;i++)
    {
        fin>>x>>y;
        if (x<hq.first)
            if (y<hq.second)
                c[1].push_back(make_pair(x,y));
            else
                c[4].push_back(make_pair(x,y));
        else
            if (y<hq.second)
                c[2].push_back(make_pair(x,y));
            else
                c[3].push_back(make_pair(x,y));
    }
    for (int i=1;i<=4;i++)
        sort(c[i].begin(), c[i].end(), panta);
    for (int i=1;i<=4;i++)
        {
            int lim=c[i].size();
            for (int j=0;j<lim-1;j++)
                if ((double)(hq.second-c[i][j].second)/(hq.first-c[i][j].first)==(double)(hq.second-c[i][j+1].second)/(hq.first-c[i][j+1].first))
                    nrdrum--;
        }
    fout<<nrdrum<<'\n';
    return 0;
}