Pagini recente » Cod sursa (job #1199826) | Cod sursa (job #1276142) | Cod sursa (job #1809869) | Cod sursa (job #1878025) | Cod sursa (job #496959)
Cod sursa(job #496959)
#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;
}