Cod sursa(job #496959)

Utilizator ioanabIoana Bica ioanab Data 31 octombrie 2010 18:01:08
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
using namespace std;

ifstream in("orase.in");
ofstream out("orase.out");

struct POINT
{
	int x,y;
};

POINT v[50002];

int partit(int st,int dr)
{
	int i,j,m;
	POINT aux,p;
	i=st-1;
	j=dr+1;
	m=(st+dr)/2;
	p=v[m];
	while(1)
	{
		do{++i;}while(v[i].x<p.x);
		do{--j;}while(v[j].x>p.x);
		if(i<j)
		{
			aux=v[i];
			v[i]=v[j];
			v[j]=aux;
		}
		else
			return j;
	}
}

void qsort(int st,int dr)
{
	int m;
	if(st<dr)
	{
		m=partit(st,dr);if(st<dr)
		qsort(st,m);
		qsort(m+1,dr);
	}
}


int main()
{
	int m,n,i,u,dist,dmax=0;
	in>>m>>n;
	for(i=1;i<=n;i++)
		in>>v[i].x>>v[i].y;
	qsort(1,n);
	u=1;
	for(i=2;i<=n;++i)
	{
		dist=v[u].y+v[i].y+v[i].x-v[u].x;
		if(dist>dmax)
			dmax=dist;
		if( v[i].y > v[u].y+v[i].x - v[u].x)
			u=i;
	}
	
	out<<dmax<<'\n';
	
	return 0;
}