Pagini recente » Cod sursa (job #2942228) | Cod sursa (job #1926783) | Cod sursa (job #2340553) | Cod sursa (job #1840065) | Cod sursa (job #68115)
Cod sursa(job #68115)
#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]);
}
void buble()
{
long aux, i, j, ok=0;
while (ok==0)
{ ok=1;
for (i=1; i<n; i++)
for (j=i+1; j<=n; j++)
if (l[i]>l[j])
{ aux=l[i]; l[i]=l[j]; l[j]=aux;
aux=d[i]; d[i]=d[j]; d[j]=aux;
ok=0;
}
}
}
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;
}