Pagini recente » Cod sursa (job #2686785) | Cod sursa (job #2802786) | Cod sursa (job #358204) | Cod sursa (job #90716) | Cod sursa (job #1142308)
#include <fstream>
using namespace std;
ifstream f("orase.in");
ofstream g("orase.out");
int m,n;
struct {int d,l;} o[50001],aux;
int pozdiv(int li, int lf){
int i,j,piv;
piv=o[li].d;
i=li-1;
j=lf+1;
do{
do{i++;} while(o[i].d<piv);
do{j--;} while(o[j].d>piv);
if(i<j){
aux=o[i];
o[i]=o[j];
o[j]=aux;
}
} while(i<j);
return j;
}
void quicksort(int li, int lf){
int p;
if(li==lf)
return ;
p=pozdiv(li,lf);
quicksort(li,p);
quicksort(p+1,lf);
}
int main()
{
int i,max=-1,j,departe,d;
f>>n>>m;
for(i=1;i<=m;i++)
f>>o[i].d>>o[i].l;
quicksort(1,m);
departe = 1;
for(i = 2;i<=m;i++)
{
if (o[i].l > o[departe].l + o[i].d - o[departe].d)
departe = i;
d=o[i].d - o[departe].d + o[i].l + o[departe].l;
}
g<<d<<"\n";
return 0;
}