Pagini recente » Cod sursa (job #1127451) | Cod sursa (job #101270) | Cod sursa (job #2747926) | Cod sursa (job #2817585) | Cod sursa (job #68116)
Cod sursa(job #68116)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
FILE*f=fopen("orase.in","r");
FILE*g=fopen("orase.out","w");
long n,m,d[50009],l[50009],dmax=-100, max1, max2, dr1, dr2;
void citire()
{
int i,j;
fscanf(f,"%ld %ld",&m,&n);
for(i=1;i<=n;++i)
fscanf(f,"%ld %ld",&d[i],&l[i]);
}
int pozitie(int p, int u)
{ int st, dr;
int aux;
st=p;
dr=u;
aux=l[p];
while(st<dr)
{ while(st<dr && l[dr]>=aux) dr--;
l[st]=l[dr];
while(st<dr && l[st]<=aux) st++;
l[dr]=l[st];
l[st]=aux;
aux=d[p]; d[dr]=d[st]; d[st]=aux;
}
return st;
}
void qsort(int p, int u)
{ int m=pozitie(p, u);
if(p<m) qsort(p, m-1);
if(m<u) qsort(m+1, n);
}
void calcul()
{
int i,j;
for (j=n; j>=n/2+1; j--)
for(i=n-1;i>1;i--)
if(abs(d[i]-d[j])+l[i]+l[j]>dmax) dmax=abs(d[i]-d[j])+l[i]+l[j];
fprintf(g,"%ld",dmax);
}
int main()
{
citire();
qsort(1,n);
calcul();
fclose(f);
fclose(g);
return 0;
}