Cod sursa(job #3254064)

Utilizator Radu_GrigorieGrigorie Radu Stefan Radu_Grigorie Data 5 noiembrie 2024 21:27:09
Problema Pachete Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("pachete.in");
ofstream fout("pachete.out");
struct nr
{
    int i;
    int j;
};
nr v[4][1000005];
bool cmp1(nr a, nr b)
{
    return a.i>b.i||(a.i==b.i&&a.j>b.j);
}
bool cmp2(nr a, nr b)
{
    return a.i<b.i||(a.i==b.i&&a.j<b.j);
}
int main()
{
    long long n, x, y, ii, jj, k1=0, k2=0, k3=0, k4=0, maxim=0, cnt=0;
    fin >> n >> ii >> jj;
    for(int t=1; t<=n; t++)
    {
        fin >> x >> y;
        if(x>=ii)
        {
            if(y>=jj)
            {
                k1++;
                v[1][k1].i=x-ii;
                v[1][k1].j=y-jj;
            }
            else
            {
                k4++;
                v[4][k4].i=x-ii;
                v[4][k4].j=jj-y;
            }
        }
        else
        {
            if(y>=jj)
            {

                k2++;
                v[2][k2].i=ii-x;
                v[2][k2].j=y-jj;
            }
            else
            {
                k3++;
                v[3][k3].i=ii-x;
                v[3][k3].j=jj-y;
            }
        }
    }
    sort(v[1]+1, v[1]+k1+1, cmp1);
    sort(v[2]+1, v[2]+k2+1, cmp2);
    sort(v[3]+1, v[3]+k3+1, cmp2);
    sort(v[4]+1, v[4]+k4+1, cmp1);
    maxim=0;
    for(int t=1; t<=k1; t++)
    {
        if(v[1][t].j>maxim)
        {
            maxim=v[1][t].j;
            cnt++;
        }
    }
    maxim=0;
    for(int t=1; t<=k4; t++)
    {
        if(v[4][t].j>maxim)
        {
            maxim=v[4][t].j;
            cnt++;
        }
    }
    maxim=0;
    for(int t=1; t<=k2; t++)
    {
        if(v[2][t].j>maxim)
        {
            maxim=v[2][t].j;
            cnt++;
        }
    }
    maxim=0;
    for(int t=1; t<=k3; t++)
    {
        if(v[3][t].j>maxim)
        {
            maxim=v[3][t].j;
            cnt++;
        }
    }
    fout << cnt;
    return 0;
}