Cod sursa(job #1632887)

Utilizator GeanaVladGeana Vlad GeanaVlad Data 6 martie 2016 11:07:48
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include<fstream>
#include<cstdio>
#include<algorithm>
#include<stdio.h>
using namespace std;
struct coord
{
    int x,y;
};
coord v[50001];
int dist(int i,int j)
{
    return v[i].y+v[j].y+v[j].x-v[i].x;
}
int diferenta(int i,int j)
{
    return v[j].x-v[i].x+v[j].y-v[i].y;
}
int x,y,n,m,i,j,mx,d[50001];
bool cresc(coord a, coord b)
{
    if(a.x<b.x)
        return true;
    if(a.x==b.x)
        return (a.y<b.y);
    return false;
}
/*void sortare()
{
    bool ok=1;int i;
    while(ok)
    {
        ok=0;
        for(i=1;i<n;i++)
            if(v[i+1].x<v[i].x)
            {ok=1;swap(v[i+1],v[i]);}
            else if(v[i+1].x==v[i].x)
                 if(v[i+1].y<v[i].y) {ok=1;swap(v[i],v[i+1]);}
    }
}*/
int main()
{
   freopen("orase.in","r",stdin);
   freopen("orase.out","w",stdout);
   scanf("%d%d", &m, &n);
   for(i=1;i<=n;i++)
       scanf("%d%d", &v[i].x, &v[i].y);
   sort(v+1,v+n+1,cresc);
   for(i=2;i<=n;i++)
        {
            d[i]=max(dist(i-1,i),d[i-1]+diferenta(i-1,i));
            mx=max(mx,d[i]);
        }
   printf("%d", mx);
}