Pagini recente » Cod sursa (job #1456922) | Cod sursa (job #254073) | Cod sursa (job #1485970) | Cod sursa (job #2733823) | Cod sursa (job #74858)
Cod sursa(job #74858)
# include <stdio.h>
const long int MAXN=50000;
struct {long int x,l;} oras[MAXN+1];
long int n,m;
void citire()
{
FILE *f=fopen("orase.in","r");
fscanf(f,"%ld%ld",&m,&n);
long int i;
for (i=1;i<=n;i++)
fscanf(f,"%ld%ld",&oras[i].x,&oras[i].l);
fclose(f);
}
void quick(long int li, long int lf)
{
long int i=li,j=lf,ii=0,jj=-1,aux;
while (i<j)
{
if (oras[i].x>oras[j].x)
{
aux=oras[i].x;oras[i].x=oras[j].x;oras[j].x=aux;
aux=oras[i].l;oras[i].l=oras[j].l;oras[j].l=aux;
aux=ii;ii=-jj;jj=-aux;
}
i+=ii;j+=jj;
}
if (i-li>1) quick(li,i-1);
if (lf-i>1) quick(i+1,lf);
}
long int solve()
{
long int ilast,sol=0;
ilast=1;
long int i;
for (i=2;i<=n;i++)
{
if (oras[ilast].l+oras[i].l+oras[i].x-oras[ilast].x>sol)
sol=oras[ilast].l+oras[i].l+oras[i].x-oras[ilast].x;
if (oras[i].l>oras[ilast].l+oras[i].x-oras[ilast].x)
ilast=i;
}
return sol;
}
void scrie(long int sol)
{
FILE *g=fopen("orase.out","w");
fprintf(g,"%ld\n",sol);
fcloseall();
}
int main()
{
citire();
quick(1,n);
long int sol=solve();
scrie(sol);
return 0;
}