Cod sursa(job #68545)

Utilizator FlorianFlorian Marcu Florian Data 28 iunie 2007 13:11:44
Problema Orase Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<stdio.h>
#include<stdlib.h>
typedef struct
        {
        long x,y;
        }coord;
coord c[50007],b[50009];
long ii[50007];
long n,m;
FILE*f=fopen("orase.in","r");
FILE*g=fopen("orase.out","w");

void read()
        {
        fscanf(f,"%ld %ld",&m,&n);
        long i;
        for(i=0;i<n;++i)
                {
                fscanf(f,"%ld %ld",&c[i].y,&c[i].x);
                ii[i]=i;
                }
        }
int cmp(const void *a, const void *b)
{
long int x = * (long int *) a, y = * (long int *) b;
if (c[x].x==c[y].x) return c[x].y - c[x].y;
return c[x].x - c[y].x;
}
void sortare()
        {
        qsort(ii,n,sizeof(ii[0]),cmp);
        for(long i=0;i<n;++i) b[i]=c[ii[i]];
        }
void solve()
        {
        long i,max=-1,j;
        b[n]=b[1];
        for(i=0;i<n;++i)
                {
                j=i+1;
                if(b[i].x+b[j].x+abs(b[i].y-b[j].y)>max)
                        max=b[i].x+b[j].x+abs(b[i].y-b[j].y);
               }
         fprintf(g,"%ld",max);
         }
int main()
        {
        read();
        sortare();
        solve();
        return 0;
        }