Cod sursa(job #1632294)

Utilizator GeanaVladGeana Vlad GeanaVlad Data 6 martie 2016 00:05:19
Problema Orase Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include<fstream>
#include<cstdio>
#include<algorithm>
using namespace std;
ifstream f("orase.in");
ofstream g("orase.out");
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;
}
void qsort(int ls,int ld)
{
    int i,j,x;
    i=ls;j=ld;
    x=v[(i+j)/2].x;
    while(i<=j)
    {
        while(i<ld && v[i].x<x) i++;
        while(j>ls && v[j].x>x) j--;
        if(i<=j)
        {
            swap(v[i],v[j]);
            i++;
            j--;
        }
        if(j>ls) qsort(ls,j);
        if(i<ld) qsort(i,ld);
    }
}
int x,y,n,m,i,j,mx,d[50001];
int main()
{
   f>>m>>n;
   for(i=1;i<=n;i++)
        {f>>x>>y;if(x<=m) v[i].x=x;v[i].y=y;}
   qsort(1,n);
   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]);
        }
   g<<mx;
}