Cod sursa(job #8325)

Utilizator fireatmyselfBogdan-Alexandru Stoica fireatmyself Data 24 ianuarie 2007 17:05:32
Problema Pachete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
#define NMAX 50500
#define max(a, b) ((a) > (b) ? (a):(b))

using namespace std;

int N, X, Y, maxX, maxY, Num;
vector<pair<int, int> > Cadran[4];

int main()
{
        int i, x, y, j;

        freopen("pachete.in", "r", stdin);
        scanf("%d %d %d", &N, &X, &Y);
        
        for (i = 0; i < N; i++)
        {
                scanf("%d %d", &x, &y);
                x -= X; y -= Y;
                if (x >= 0 && y >= 0) Cadran[0].push_back(make_pair(x, y));
                if (x >= 0 && y < 0) Cadran[1].push_back(make_pair(x, y));
                if (x < 0 && y < 0) Cadran[2].push_back(make_pair(x, y));
                if (x < 0 && y >= 0) Cadran[3].push_back(make_pair(x, y));
        }

        for (i = 0; i < 4; i++)
        {
                sort(Cadran[i].begin(), Cadran[i].end());
                maxX = -1; maxY = -1;
                for (j = 0; j < Cadran[i].size(); j++)
                {
                        x = abs(Cadran[i][j].first); y = abs(Cadran[i][j].second);
                        if ( (maxX > x && maxY <= y) || (maxX <= x && maxY > y) || (maxX < 0) )
                           Num++;
                        maxX = max(x, maxX); maxY = max(y, maxY);
                }
        }

        freopen("pachete.out", "w", stdout);
        printf("%d\n", Num);

        return 0;
        
}