Cod sursa(job #2330418)

Utilizator raulieneiIenei Raul raulienei Data 28 ianuarie 2019 12:54:30
Problema Pachete Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.82 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream f ("pachete.in");
ofstream g ("pachete.out");
struct loc
{
    long long int x,y;
    int z;
};
loc s[50001],init;
void citire (long int &n,loc s[50001])
{
    long int i;
    f>>n;
    f>>init.x;
    f>>init.y;
    init.z=0;
    for(i=1;i<=n;i++)
    {
        f>>s[i].x;
        f>>s[i].y;
        s[i].z=0;
    }
}
int verif (long int n,loc s[50001])
{
    long int i;
    for(i=1;i<=n;i++) if(s[i].z==0) return 0;
    return 1;
}
void ordonare (long int n,loc s[50001])
{
   long  long int i,j,aux;
   for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
        if(llabs(init.x-s[i].x)+llabs(init.y-s[i].y)<llabs(init.x-s[j].x)+llabs(init.y-s[j].y))
   {
       aux=s[i].x;
       s[i].x=s[j].x;
       s[j].x=aux;
       aux=s[i].y;
       s[i].y=s[j].y;
       s[j].y=aux;
       aux=s[i].z;
       s[i].z=s[j].z;
       s[j].z=aux;
   }
}
int prog (long int n,loc s[50001])
{
    long long int a,b,i=1,j,c;
    int dr=0,ok;
    ordonare(n,s);
    while(verif(n,s)==0)
    {
        i=1;
        while(s[i].z==1) i++;
        a=llabs(init.x-s[i].x)+llabs(init.y-s[i].y);
        ok=0;
        for(j=1;(j<=n)&&(ok==0);j++)
        {
            if(s[j].z==0) if(i!=j)
            {
                b=llabs(init.x-s[j].x)+llabs(init.y-s[j].y);
                c=llabs(s[i].x-s[j].x)+llabs(s[i].y-s[j].y);
                if(llabs(a-b)>=c)
                {
                    s[j].z=1;
                    s[i].z=1;
                    dr++;
                    ok=1;
                }

            }
        }
        if(ok==0)
        {
             s[i].z=1;// cout<<i<<"  ";
             dr++;
        }
    }
    g<<dr;
}
int main()
{
    long int n;
    citire(n,s);
    prog(n,s);
}